도커 설치하기 (MySQL 포함)
도커 설치
개발환경과 완전히 같은 환경을 구축하기 위해 도커를 설치하자.
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' 눌러서 접속할 수도 있다.