이번 포스팅에서는 DockerHub의 Mysql 이미지를 통해 컨테이너를 실행하는 법에 대해 설명.
컨테이너 생성에 앞서 도커 컨테이너를 만들기 위해선 커스텀 이미지 파일을 사용하여도 되지만
아래 사이트를 참조하여 이미 생성되있는 이미지를 활용하여 생성할 수 있음.
위 사이트에서 Mysql을 검색해보면 이미 해당 DataBase에 대한 이미지가 있다는 걸 알 수 있음.
이번 포스팅에서는 해당 이미지를 통해 실행환경만 갖춘 깡통 컨테이너를 생성해보고 Host(도커를 실행하고 있는 컴퓨터)에서 MysqlWorkBench를 통해 접속해보는 것까지 다룸.
Mysql 이미지를 통한 도커 컨테이너 생성
Host의 CMD창을 열어 아래 명령어를 실행.
docker pull mysql:latest
pull 명령어는 DockerHub에 존재하는 이미지 파일을 가져올 때 사용되며 콜론(:)뒤에 오는 latest는 최신버전을 의미함. (별다른 버전을 명시하지 않으면 항상 :latest)
Docker Desktop에서 이미지를 잘 가져왔는지 확인.
이제 해당 이미지를 통해 컨테이너를 실행하기 위해 CMD창에서 아래 명령어를 실행.
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=<password> -d -p 3306:3306 mysql:latest
● --name <container_name> : <container_name> 이름의 컨테이너를 실행한다.
● -e : 컨테이너 내에서 사용할 환경변수를 설정
● -e MYSQL_ROOT_PASSWORD=<password> : MySQL의 root 권한의 비밀번호를 <password>로 설정한다.
● -d : detach 모드로 컨테이너가 실행된다. 컨테이너가 백그라운드로 실행된다고 보면 된다.
● -p <호스트 포트> <컨테이너 포트> : 호스트와 컨테이너의 포트를 연결한다 (Host에 DB가 이미 실행되고 있다면 3306 포트는 사용중이므로 변경)
● mysql:latest : 컨테이너에 사용할 이미지
컨테이너에 접속해 Mysql 쿼리 작성
도커 컨테이너에 접속하기 위해서 아래 명령어를 실행하여 컨테이너 Bash에 접속
docker exec -it <컨테이너명> bash
-it : Bash Shell 접속을 위한 옵션 명시
Bash에 접속했다면 아래 명령어를 통해 Mysql root계정으로 접속
mysql -u root -p
이후 컨테이너를 생성할 때 설정해줬던 비밀번호를 입력하여 Mysql Bash 접속 후 필요한 쿼리를 수행.
Host의 WorkBench를 통해 GUI 접속
아마 컨테이너 생성 후 바로 WorkBench로 접속을 시도해보면 아래와 같은 에러가 발생할거라 생각함.
Lost connection to MySQL server at 'reading initial communication packet', system error: 0
위와 에러가 발생한 이유는
컨테이너를 생성할 당시 3306이 아닌 다른 포트를 옵션으로 주고 생성을 했지만 컨테이너 내부 Mysql의 Port는 3306으로 LISTEN중이기 때문임.
이를 해결하기 위해서는 my.cnf설정파일 수정 필요.
아래는 Docker Desktop을 활용한 수정과정을 나타냄.
1. Docker Desktop에서 해당하는 Mysql 컨테이너에 접속
2. 'File'탭에 있는 etc 폴더 OPEN
3. my.cnf파일을 찾고 우측 상단 수정버튼을 클릭하여 [port=컨테이너 생성 시 지정한 포트번호]를 작성
이 후 WorkBench를 통해 접속해보면 접속이 잘 되는 것을 확인할 수 있음!
'DevOps. > Docker' 카테고리의 다른 글
[Docker] 스프링부트 프로젝트 이미지 생성 및 컨테이너 실행 (0) | 2024.01.09 |
---|---|
[Docker] 도커란 무엇인가. (0) | 2024.01.09 |
개발 기술 블로그, Dev
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!