Docker 연동 (DB, Jupyter, Django)

이정연·2023년 3월 21일
0

Docker

목록 보기
1/1

Docker 👉🏻 DB

docker run -d -p 4000:3306 -e MYSQL_ROOT_PASSWORD=1234 --name django_db -v /Users/happyeon/Desktop/workspace/my_sql/data:/var/lib/mysql mysql:8.0.32 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --lower_case_table_names=2

  • 이 코드는 도커(Docker)를 사용하여 MySQL 데이터베이스를 실행하는 명령어입니다.

  • 여기서 -d는 백그라운드(background)에서 실행하도록 지시하는 옵션입니다.

  • -p 4000:3306은 컨테이너의 3306번 포트를 호스트의 4000번 포트와 연결하는 옵션입니다. 이것은 호스트의 4000번 포트로 MySQL 서버에 접근할 수 있게 해줍니다.

  • -e MYSQL_ROOT_PASSWORD=1234는 MySQL의 root 사용자 비밀번호를 "1234"로 설정하는 옵션입니다.

  • --name django_db는 컨테이너의 이름을 "django_db"로 지정하는 옵션입니다.

  • -v /Users/happyeon/Desktop/workspace/my_sql/data:/var/lib/mysql 는 호스트의 /Users/happyeon/Desktop/workspace/my_sql/data 경로를 컨테이너의 /var/lib/mysql 경로에 마운트하는 옵션입니다. 이것은 MySQL 데이터가 호스트의 디렉토리에 저장되어 영속적으로 유지되도록 합니다.

  • 마지막으로 mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci는 컨테이너에서 실행될 명령어입니다. 이것은 MySQL 서버가 UTF8MB4 문자 집합과 utf8mb4_unicode_ci 콜레이션(collation)을 사용하도록 설정합니다.

Docker 👉🏻 Jupyter

docker pull mysql --> mysql 이미지 설치

docker run -d --rm -p 10000:8888 -v /Users/happyeon/Desktop/workspace/docker_jupyter:/home/jovyan/work --link encore_mysql:mysql --name encore_sci5 jupyter/datascience-notebook

  • 이 명령어는 도커(Docker)를 사용하여 Jupyter Notebook을 실행하는 명령어입니다.

  • -d는 백그라운드(background)에서 실행하도록 지시하는 옵션입니다.

  • --rm은 컨테이너가 종료될 때 해당 컨테이너를 자동으로 삭제하도록 지시하는 옵션입니다.

  • -p 10000:8888은 호스트의 10000번 포트와 컨테이너의 8888번 포트를 연결하는 옵션입니다. 이것은 호스트의 10000번 포트를 통해 Jupyter Notebook에 접근할 수 있게 해줍니다.

  • -v /Users/happyeon/Desktop/workspace/docker_jupyter:/home/jovyan/work는 호스트의 /Users/happyeon/Desktop/workspace/docker_jupyter 경로를 컨테이너의 /home/jovyan/work 경로에 마운트하는 옵션입니다. 이것은 호스트의 디렉토리에 저장된 Jupyter Notebook 파일을 컨테이너에서 사용할 수 있게 합니다.

  • --link encore_mysql:mysql는 다른 컨테이너인 encore_mysql의 MySQL 서버에 연결하는 옵션입니다.

  • --name encore_sci5은 컨테이너의 이름을 "encore_sci5"로 지정하는 옵션입니다.

  • 마지막으로 jupyter/datascience-notebook은 컨테이너에서 실행될 이미지 이름입니다. 이것은 Jupyter Notebook을 실행할 수 있는 이미지입니다.

Jupyter 접속 방법

위 그림과 같이 토큰 값을 복사하여 설정한 로컬 호스트로 접속한다.

나 같은 경우는 10000번 포트를 로컬 포트로 설정하였기에

localhost:10000으로 접속하여 위 토큰을 입력한다.

Jupyter notebook은 서버이기 때문에 항상 토큰값을 넘겨줘야 한다는 사실을 인지!!

Jupyter 👉🏻 DB

con = pymysql.connect(host='mysql', user='root', password='1234', db='classicmodels', charset='utf8')

  • 이 코드는 Python에서 pymysql 모듈을 사용하여 MySQL 데이터베이스에 연결하는 코드입니다.

  • pymysql.connect() 함수를 사용하여 MySQL 데이터베이스에 연결합니다. 여기서 host는 MySQL 서버의 호스트 이름을 지정하고, user는 데이터베이스에 접속하는 사용자 이름을 지정합니다. password는 해당 사용자의 비밀번호를 지정하고, db는 접속할 데이터베이스의 이름을 지정합니다.

  • charset은 MySQL 서버의 캐릭터셋(character set)을 지정합니다. 이 예제에서는 'utf8'을 사용하며, 이는 Unicode 문자를 지원합니다.

  • 여기서 host는 'mysql'이라는 호스트 이름으로 지정되어 있습니다. 이는 컨테이너 내에서 실행 중인 MySQL 서버의 이름을 의미합니다. 따라서 해당 코드는 Docker 컨테이너 내에서 실행 중인 MySQL 서버에 연결

Docker 👉🏻 Django

docker run -d -p 80:8000 -v /Users/happyeon/Desktop/playdata/Django/pybo:/usr/src/app --link django_db:mysql --name pybo encore_django:0.2

마찬가지로 pybo라는 이름을 가진 장고 컨테이너를 생성하는 명령어다.

다양한 도커 명령어

컨테이너 종료하지 않고 나오기

Ctrl + P,Q

docker attach test

컨테이너 종료

Ctrl + D

docker ps

컨테이너 삭제

docker rm [컨테이너id or 이름]

profile
0x68656C6C6F21

0개의 댓글