개인 학습/기타

도커 설치하기 (MySQL 포함)

tact 2025. 5. 15. 05:15

도커 설치

개발환경과 완전히 같은 환경을 구축하기 위해 도커를 설치하자.

 

Docker: Accelerated Container Application Development

Docker is a platform designed to help developers build, share, and run container applications. We handle the tedious setup, so you can focus on the code.

www.docker.com

Mac / Windows 정도는 당연히 구분하겠지만, 간혹 AMD64 ARM64를 구분하지 못하는 경우가 있다.

실행 단축키 (Win + R) → `cmd` 입력 → 명령어 `wmic os get osarchitecture` 입력
`64-bit`이 출력되면 아키텍처는 AMD64인 것이고, ARM이 출력되면 ARM64라고 이해하면 된다.
docker -v
도커 버전 정보가 확인되면 제대로 설치된 것이다.

MySQL 설치

docker pull mysql
MySQL 이미지 다운로드 후, 사용 가능한 이미지들은 `docker images`로 확인 가능하다.

도커 컨테이너 실행

docker run --name <컨테이너 이름> -e MYSQL_ROOT_PASSWORD=<루트 패스워드> -d -p 3306:3306 mysql:latest

 

컨테이너를 만들기 위해 컨테이너 이름, 루트 패스워드, 포트번호 등을 추가하였다.
docker ps -a
현재 실행 중인 컨테이너를 확인하는 명령어다.

 

도커 컨테이너 접속

docker exec -it <컨테이너명> bash
도커 컨테이너 내부에 접속하기 위한 명령어이며, 다시 나가려거든 exit을 입력하면 된다.

 

도커 컨테이너 중단

docker stop <컨테이너명>
컨테이너를 삭제하려면, 먼저 해당 컨테이너를 중단시켜야 한다.

 

도커 컨테이너 삭제

docker rm <컨테이너 ID>
컨테이너 ID는 명령어를 통해 알 수도 있지만 도커를 실행해서 직접 봐도 된다.

docker-compose

기존 방식은 옵션이 늘어날수록 명령어가 복잡해질 뿐 아니라, 같은 내용을 보관해서 여러 번 실행할 수 없기 때문에 불편하다. docker-compose는 설치하고자 하는 도커 컨테이너의 상세 옵션을 적어둘 수 있는 config 파일로 알아두자. 여러 개의 이미지를 사용하는 하나의 환경을 구축하기에도 유리하다.

 

docker-compose.yml 파일을 생성해서 필요한 정보들을 기입하자. 참고로 '.yml'과 '.yaml'은 확장자 이름만 다를 뿐 같은 것이다. 원래는 '.yaml'이 정식 확장자라고 한다. 단지 과거에는 일부 시스템과 툴에서 4자 이상의 확장자를 못 썼기 때문에 '.yml'처럼 3자로 줄여 쓰던 관행이 생긴 것으로 알려져 있다.

version: "3.8"
services:
  db:
    image: mysql:latest
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: <루트 패스워드>
      MYSQL_DATABASE: <데이터베이스 이름>
      MYSQL_USER: <사용자명>
      MYSQL_PASSWORD: <사용자 패스워드>
      TZ: Asia/Seoul
    volumes:
      - ./db/mysql/data:/var/lib/mysql
현재 volumes 옵션에서는 컨테이너를 지우더라도 DB에 저장된 데이터가 증발하지 않도록 본 PC 폴더에 마운트 시키고 있다.
docker -compose -p <프로젝트 이름> up -d
프로젝트 이름이 들어가는 이유는 docker-compose가 여러 개의 이미지를 하나의 프로젝트로 구성하기 때문이다.

 

참고로 앞서 설명한대로 'docker exec -it <컨테이너 이름> bash'로 접속해도 되지만, 도커 열고 해당 컨테이너 선택한 다음 'open in terminal' 눌러서 접속할 수도 있다.