Docker-Jupyter Notebook 서버 제작

SummerToday·2024년 2월 12일
1

도커, 서버 기술

목록 보기
16/34
post-thumbnail

Docker로 Jupyter Notebook 띄우기

/home/jovyan 폴더를 호스트 pc의 /home/ubuntu/2021_LEARN 폴더로 바인딩(공유) 한다.(기존 /home/jovyan 폴더의 내용은 호스트 pc의 /home/ubuntu/2021_LEARN 폴더의 내용으로 대체된다)

이를 통해 /home/ubuntu/2021_LEARN 폴더의 파일들을 컨테이너 내에서 사용하거나 변경할 수 있고, 컨테이너를 삭제하더라도 컨테이너에서 /home/ubuntu/2021_LEARN 폴더에서 작업한 내용은 호스트 pc에 남아 있게된다.

docker run --rm -d -p 8888:8888 -v /home/ubuntu/2021_LEARN:/home/jovyan/work jupyter/datascience-notebook

/home/jovyan 폴더: 컨테이너 내부에서 jupyter notebook이 실행되는 폴더

위 명령어로 서버 실행 후 해당 EC2 Ip의 8888번 포트로 접속 시 token을 입력해야 로그인할 수 있다.

token은 docker logs [컨테이너 ID] 이후 token=~ 부분을 통해 확인할 수 있다.


컨테이너와 컨테이너 연결하기

  • Dockerfile_MYSQL 작성 예시

    FROM mysql:5.7
    
     ENV MYSQL_ROOT_PASSWORD=1234
    
     ENV MYSQL_DATABASE=db
  • 이미지 빌드

    docker build --tag mysqldb -f Dockerfile_MYSQL .

  • 컨테이너 생성 후 실행

    docker run --rm -d --name mydb -v /home/ubuntu/mysqldata:/var/lib/mysql mysqldb

  • Jupyter Notebook 컨테이너를 mysql 컨테이너와 연결하여 실행 ( --link )

    --link [연결할 컨테이너 이름]:[연결될 컨테이너 이름]

    docker run --rm -d -p 8888:8888 -v /home/ubuntu/2021_LEARN:/home/jovyan/work --link mydb:myjupyterdb jupyter/datascience-notebook

    • myjupyterdb 컨테이너에 mydb 컨테이너를 연결하고, 외부 포트 8888번을 열어 실행한다. (자세한 옵션들 해석 생략.)

    • EC2 보안그룹에서 인바운드 큐칙으로 8888번 포트를 허용해주어야 한다.

      -p 옵션이 없으면 외부에서는 해당 컨테이너에는 접속이 불가능하다. 하지만 포트 자체는 열려있어 컨테이너끼리는 연결이 가능하다.

      • 기본 포트 설정
        • MySQL : 3306번 포트
        • Jupyter Notebook : 8888번 포트

      docker inspect [컨테이너 이름/ID]를 통해 몇번 포트가 열려있는지 확인 가능하다.

  • mysql 접속 코드 참고

    db = pymysql.connect(
          host='실행 컨테이너 이름', 
          port=3306, 
          user='root', 
          passwd='1234', 
          db='db', 
          charset='utf8')
    



해당 글은 다음 강의의 내용을 참고한 글임을 밝힙니다. 자세한 내용은 다음 강의에서 확인해볼 수 있습니다. 인프런, 잔재미 코딩, ⌜풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3]⌟
profile
블로그 이관했습니다.

0개의 댓글