주피터 노트북 컨테이너에 mysql 컨테이너 연결
1) MYSQL 도커 파일 작성
$ vi Dockerfile_MYSQL
# Dockerfile_MYSQL
FROM mysql:5.7
ENV MYSQL_ROOT_PASSWORD=1004
ENV MYSQL_DATABASE=ben_db
2) 도커 파일 이미지 작성
$ docker build --tag mysqldb -f Dockerfile_MYSQL .
- 도커의 build 명령어는 현재 디렉토리의 Dockerfile 이라는 이름을 가진 파일을 읽어서 이미지로 만든다.
- --tag는 이미지 이름을 직접 설정하는 옵션, 작성을 안하면 디폴트로 latest가 태그로 부여진다.
- -f는 도커 파일명을 지정하는 옵션, 작성을 안하면 디폴트로 Dockerfile 이름 파일이 이미지로 빌드됨
마지막 ' . '은 현재 폴더를 나타내는 것으로, 현재 폴더에 Dockerfile이 있다는 것이다.
3) MYSQL 컨테이너 실행
$ docker run -d --name mydb mysqldb(이미지)
명령어에 -p 옵션을 안 썼는데, 민감한 정보를 담고 있는 DB를 외부 IP에 개방할 필요는 없기 때문이다.
$ docker inspect mysqldb 로 이미지를 확인해보자.
Dockerfile에서 작성한대로 ENV가 설정되어 있음을 볼 수 있다. 그리고 ExposePorts를 보면 디폴트 값으로 3306 포트가 지정되어 있는데, ExposePort는 docker 컨테이너의 특정 포트를 외부에 오픈하는 설정이다. Dockerfile에서 EXPOSE 포트 번호를 작성하면, docker run -p 옵션으로 host PC의 특정 포트를 컨테이너의 특정 포트와 매핑시키게 된다. MYSQL은 3306과 33060 포트를 기본적으로 오픈해둔 것을 확인할 수 있다.
4) --link 옵션
--link [컨테이너 이름:연결할 컨테이너를 지칭할 이름] [실행할 컨테이너]으로 주피터 노트북 컨테이너를 실행한다.
$ docker run --rm -d -p 1111:8888 --link mydb:myjupyterdb jupyter/datascience-notebook
mysql이 실행되고 있는 docker container에 접속하기 위한 또 다른 docker container를 생성하는 명령이다. 해당 명령으로 주피터 노트북이 실행되는 docker container를 생성하고 실행시킨다.
위의 명령에서 '--link mydb:myjupyterdb' 부분은 주피터 노트북이 실행되는 컨테이너에서 mysql이 실행되는 컨테이너로 연결할 때 정보를 의미한다. 즉, link 옵션으로 연결할 컨테이너명은 mydb이며 주피터 노트북이 실행되는 컨테이너가 해당 컨테이너로 접근할 때 사용하는 이름이 myjupyterdb라는 것을 뜻한다.
파이썬 문법을 활용하여 mysql이 실행되는 컨테이너에 접속하게 되는데, host는 외부 IP주소가 아니라 --link 옵션에서 명시했던 주피터 노트북과 연결할 컨테이너를 지칭할 이름을 넣어주면 되고, Dockerfile-mysql에서 ENV에서 설정한 mysql 비밀번호와 db명을 적어주면 올바르게 작동한다.
'도커(Docker)' 카테고리의 다른 글
Nginx 웹 서버 포트 별로 Reverse Proxy 설정 (0) | 2022.02.04 |
---|---|
도커 데이터 관리(volume, mount) (0) | 2022.01.28 |
Docker Network (0) | 2022.01.27 |
도커 컴포즈(Docker Compose) (0) | 2022.01.26 |
가상화, 도커 의미(이미지와 컨테이너) (0) | 2022.01.21 |
댓글