Docker로 MySQL을 실행해 보자

홍예석·2023년 9월 16일
0

도커로 MySQL을 실행하기

제목 그대로, 도커로 MySQL을 실행하는 포스트.
도커는 가상화 기술을 이용해 컨테이너를 생성하여 각 컨테이너마다 포트를 할당하고, 해당 포트마다 프로세스를 할당한다. 이 포스트는 그 예시의 일환으로 도커를 이용해 컨테이너를 만들어 MySQL을 컨테이너 안에서 실행시키는 글이다.

도커 다운로드

가장 먼저 도커를 사용하려면 당연히 도커를 다운로드 받아야 한다. 자신의 운영체제에 맞는 버전을 다운로드 받자
다운로드가 완료되었다면, 명령 프롬프트를 열어 잘 다운로드되었는지 확인한다

// 버전이 나온다면 잘 완료된 것
docker -v

MySQL 이미지 다운로드(pull)

이미지를 다운로드 받는 것을 도커에서는 'pull'이라고 부른다. MySQL 이미지를 pull해 오자

docker pull mysql:{version}

특정 버전을 요구하는 프로젝트가 아니라면 {version} 안에 latest를 넣어주자. 가장 최근의 버전을 자동으로 pull해 온다.

Docker를 이용해 MySQL 실행

지금 우리는 도커도 다운로드 받았고, MySQL이라는 이미지도 pull 해 왔다. 이제 할 일은 docker를 이용해 컨테이너를 생성하고, 해당 컨테이너에서 MySQL을 실행시키는 것이다.

docker run --name mysql-sample-container -e MYSQL_ROOT_PASSWORD=<password> -d -p 3306:3306 mysql:{version}
  • docker run : 도커 실행 명령어
  • --name {컨테이너 이름} : 실행할 컨테이너의 이름
  • -e (=env) : 이후 내용이 환경 구성
  • MYSQL_ROOT_PASSWORD : 루트 사용자의 비밀번호
  • -d : 데몬 모드 : 컨테이너가 백그라운드에서 실행되며, 커맨드 프롬프트가 차지되지 않고 다른 작업 수행 가능, 즉 -d를 빼면 해당 명령 프롬프트에서 바로 MySQL이 실행되는 컨테이너로 진입한다.
  • -p {로컬 포트 : 컨테이너 포트} : 포트 매핑
    • 포트 매핑이란?
      위 예시에서, -p 3306:3306이 뜻하는 건 앞의 3306은 로컬에서의 3306 포트를 말한다. 즉 명령 프롬프트에서 netstat -ano 명령어로 모든 프로세스를 찾아보면 직접 pid가 할당되어 있는 포트다. 그리고 앞의 3306 포트에서 다시 포트를 여럿으로 분산시킬 수 있다. 이 '여럿'을 도커에서는 '컨테이너'라고 이름을 붙여 구분한다. 따라서 뒤의 3306은 컨테이너의 포트 번호이고, 우리는 서버로 동작하고 있는 우리 로컬 컴퓨터의 3306 포트로 요청이 들어오면 컨테이너 중 3306 포트를 할당받은 컨테이너로 요청을 넘기게 된다. 이를 통해, 3306으로 요청을 받았을 때 어떤 컨테이너가 요청을 처리할 지 직접 설정해 줄 수 있게 된다.

컨테이너 확인 및 콘솔 접속

위에서 Docker를 이용해 MySQL이 실행되었다면, 잘 실행되고 있는지 확인해야 한다.

docker ps
//참고 : docker ps -a는 실행되지 않고 있는 도커 컨테이너도 모두 보여준다

위 명령어를 입력했을 때 컨테이너가 나온다면 잘 실행된 것이다. 그렇다면 현 상태는

로컬 사용자의 3306 : 도커 컨테이너 3306 에서 MySQL이 동작중

위 상태가 된 것이다. 이제 아래 명령어로 컨테이너로 들어가면 MySQL을 사용할 준비가 끝난다.

docker exec -it {도커 컨테이너 이름} bash

명령 프롬프트에서 사용자가 아니라 bash가 나오고 있다면 잘 들어온 것.

다음 단계로

여기까지 도커로 MySQL을 실행하고, 사용 준비까지 마쳤다. 다음 포스트에서는 본격적으로 MySQL을 사용해 볼 차례다.
만약 도커 이미지, 컨테이너, 가상화라는 개념에 대해 생소하다면, 다음 단계로 넘어가기 전, 이 세 개의 개념에 대해서는 정리하고 넘어갈 것을 권한다.

profile
잘 읽어야 쓸 수 있고 잘 들어야 말할 수 있다

0개의 댓글