도찐개찐

[Docker] 주피터 노트북 설치 본문

Infra -------------------------/DOCKER

[Docker] 주피터 노트북 설치

도개진 2023. 4. 26. 17:26
$ docker pull python:3.9.12

 

 

1. Container 생성

Python 환경의 container를 생성합니다.

 

setting은 아래와 같이 진행하면 되고 Jupyter는 기본적으로 8888포트를 사용하기 때문에 Container의 8888 port를 host port에 연결시켜야 합니다.

 

host의 8888 포트를 container의 8888 포트에 연결시켜주는 예시 코드입니다.

# Host에 mount할 폴더 /home
# container의 폴더 /root
# port (host port):8888
$ docker run -d -it --name jupyter -p 8888:8888 --mount type=bind,source=/home,target=/root python:3.7.3

 

 

2. Container 접속

attach로 접속하지 않고 exec으로 접속합니다.

 

attach로 접속하는 경우 python 환경으로 들어가집니다.

$ docker start jupyter
$ docker exec -it jupyter /bin/bash

 

 

3. Jupyter 설치 및 환경 세팅

 

Container에 exec 명령어로 접속한 뒤 jupyter를 설치해줍니다.

$ pip install --upgrade pip
$ pip install jupyter

 

 

서버를 띄우기 위해서 인증 정보를 생성해야 합니다. 이를 위해서 config 파일을 생성합니다.

config 파일은 생성 시 /root/.jupyter/jupyter_notebook_config.py 에 저장이 됩니다.

$ jupyter notebook --generate-config -y

만약 overwrite하겠냐고 묻는다면 y를 입력하고 enter를 입력합니다.

 

 

다음으로 ipython으로 인증정보를 생성합니다. jupyter notebook 서버에 접속 할 때 필요한 비밀번호를 생성하는 과정입니다.

  • passwd() 로 생성하고 생성 후 출력되는 인증정보 ’argon2:…..’는 따로 복사해두어야 합니다 !!
# bash에서 실행
$ ipython
# ipython 환경에서 실행
In [1] :from notebook.auth import passwd

In [2] :passwd()
>>>>> Enter password:
>>>>> Verify password:

Out[2]: 'argon2:$argon2id$.....' # 이 부분을 복사해두어야 합니다 !

In [3]: quit()

 

 

jupyter notebook에서 서버를 띄우기 위한 환경 정보를 넣어주어야 합니다. 이를 위해 jupyter_notebook_config.py를 수정해줍니다.

 

nano 패키지를 이용해 jupyter_notebook_config.py를 열어 수정해줍니다.

$ apt-get update
$ apt-get install nano

# config 파일 여는 명령어
$ nano /root/.jupyter/jupyter_notebook_config.py

jupyter_notebook_config.py에 접근하였다면 아래의 정보를 입력해준 뒤 ctrl + x, y, enter를 순서대로 입력하여 정보를 저장하고 빠져나옵니다.
→ 그냥 파일 맨 위에 밑에 있는 값을 넣고 저장해 주면 됩니다.

이때 아까 password 설정시 복사해둔 값을 c.NotebookApp.password 에 넣어줍니다.

c=get_config()

c.NotebookApp.ip='localhost'
c.NotebookApp.open_browser=False
c.NotebookApp.password='argon2:$argon2......' # 아까 복사해둔 값 입력
c.NotebookApp.password_required=True
c.NotebookApp.port=8888
c.NotebookApp.iopub_data_rate_limit=1.0e10  
c.NotebookApp.terminado_settings={'shell_command': ['/bin/bash']} # terminal을 bash로 실행

 

 

4. Jupyter or JupyterLab 서버 올리기

서버 정보를 local host로 주었기 때문에 jupyter notebook 실행 시 --ip 0.0.0.0 로 올려야 합니다.

# bash에서 입력
$ jupyter notebook --ip 0.0.0.0 --allow-root
$ jupyter-lab --ip 0.0.0.0 --allow-root

 

5. jupyter notebook 접속

서버가 정상적으로 올라감을 확인했다면 host machine의 ip로 접속 port를 8888로 지정해주어 원격으로 접속하면 됩니다.

 

접속 방법은 웹 브라우저에 http://(host machine ip):8888/tree 로 접속하면 됩니다.

 

host machine의 ip가 111.111.111.111이라면 http://111.111.111.111:8888/tree 로 접속하면 됩니다.

만약 host machine의 ip를 모르겠다면 아래 방법을 통하여 ip를 확인해 접속하시면 됩니다.

 

Host machine IP 확인 방법

$ docker inspect container [container ID] | grep IPAddress

위의 명령어를 통하여 host machine의 IP를 확인 할 수 있습니다.

728x90
Comments