728x90
1. jupyter/datascience-notebook image ๊ธฐ๋ฐ CMD๋ก ์คํ
CMD๋ก ์์ฑํ๋ ๊ณผ์
- ๋์ปค ์ด๋ฏธ์ง pull
$ docker pull jupyter/datascience-notebook image
- ์ปจํ ์ด๋ run
$ docker run \ -d \ -it \ -p 8000:8888 \ -e GRANT_SUDO=yes --name jupyter
- ์ปจํ ์ด๋ ์ ์
$ docker exec -it jupyter bash
- ๋น๋ฐ๋ฒํธ ์์ฑ
/ ipython > from notebook.auth import passwd > passwd() # ๋น๋ฐ๋ฒํธ ์ ๋ ฅ # ๋น๋ฐ๋ฒํธ ํ์ธ # ์ํธํ ๋น๋ฐ๋ฒํธ ์ถ๋ ฅ (๋ณต์ฌํด๋ ๊ฒ)
- jupyter notebook ๋น๋ฐ๋ฒํธ ์ค์
/ sudo vim ~/.jupyter/jupyter_notebook_config.py # in vim -> insert mode(i) c.NotebookApp.password_required=True **c.NotebookApp.password=**'{passwd๋ก ์์ฑํ ์ํธํ ๋น๋ฐ๋ฒํธ}' # esc -> :wq / exit
/ sudo apt-get update / sudo apt-get install vim -y
- ์ปจํ ์ด๋ ์ฌ์คํ
$ docker restart jupyter
- hosting ํ ์๋ฒ ํ์ธ
[localhost:8800](http://localhost:8800)
์ผ๋ก ์ ์ → jupyter server on
2. ubuntu:18.04 image ๊ธฐ๋ฐ dockerfile๋ก ์ด๋ฏธ์ง ์์ฑ
- ์ฐธ๊ณ ๋ธ๋ก๊ทธ
Dockerfile๋ก ์ฃผํผํฐ ์๋ฒ ๊ตฌ์ถํ๊ธฐ
์ฒ์์๋ ๋๊ฐ์ด dockerfile์ ๊ตฌ์ฑํด์ ์คํํด๋ดค์๋๋ฐ, ๋ด ํ๊ฒฝ์์ ์คํ๋์ง ์๋ ๋ด์ฉ๋ค์ด ์์ด์ ํํํ ์์ ํ๊ณ ๋ถ์ํ๋ฉด์ ๋ณ๊ฒฝํด๋ณด์๋ค. ํ๋์ฉ ๋ฏ์ด๋ณด์.
FROM ubuntu:18.04
# setting basic directory
WORKDIR /home
RUN mkdir /soft
RUN mkdir /workspace
RUN apt-get update
RUN apt-get install -y net-tools wget nano lsof
# Anaconda installing
WORKDIR /home/soft
RUN wget https://repo.anaconda.com/archive/Anaconda3-2020.07-Linux-x86_64.sh
RUN bash Anaconda3-2020.07-Linux-x86_64.sh -b -p /home/soft/anaconda
RUN rm Anaconda3-2020.07-Linux-x86_64.sh
ENV PATH /home/soft/anaconda/bin:$PATH
WORKDIR /root/.jupyter
RUN jupyter notebook --generate-config
# jupyter server setting
RUN echo "c.NotebookApp.password = 'sha1:b00ee0c0e13c:9b3f0c11356d567b4b9c516af4aeae5df5a2f1e4'" >> /root/.jupyter/jupyter_notebook_config.py
RUN echo "c.NotebookApp.ip = '0.0.0.0'" >> /root/.jupyter/jupyter_notebook_config.py
RUN echo "c.NotebookApp.password_require=True" >> /root/.jupyter/jupyter_notebook_config.py110a0e6ab9fe
RUN echo "c.NotebookApp.allow_root = True" >> /root/.jupyter/jupyter_notebook_config.py
RUN echo "c.NotebookApp.open_browser = False" >> /root/.jupyter/jupyter_notebook_config.py
# set jupyter server excute location
WORKDIR '/home/soft'
๊ธฐ๋ณธ ์ด๋ฏธ์ง
- ubuntu:18.04 image๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํ๋ค.
๊ธฐ๋ณธ ์์ ํด๋ ์ค์
# setting basic directory
WORKDIR /home
RUN mkdir /soft
RUN mkdir /workspace
RUN apt-get update
RUN apt-get install -y net-tools wget nano lsof
- ubuntu root ๋ฐ๋ก ์๋์ home์ด๋ผ๋ ํด๋๋ฅผ ๋ง๋ค์ด์ ๊ทธ ์์ ์์ ํ๊ฒฝ์ ๊ตฌ์ฑํ๋๋ก ํ๋ค.
- ~/home/soft/workspace
- package ์ค์น
anaconda ์ค์น
# Anaconda installing
WORKDIR /home/soft
RUN wget https://repo.anaconda.com/archive/Anaconda3-2020.07-Linux-x86_64.sh
RUN bash Anaconda3-2020.07-Linux-x86_64.sh -b -p /home/soft/anaconda
RUN rm Anaconda3-2020.07-Linux-x86_64.sh
ENV PATH /home/soft/anaconda/bin:$PATH
- anaconda๋ฅผ ์ค์นํ work directory๋ฅผ ์๋ก ์ค์ ํด์คฌ๋ค.
- ์ด์ home/soft ์๋์์ anaconda ๋ช ๋ น์ด๋ฅผ ์คํํ ์ ์๋ค.
- anaconda image ์ค์น๋ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ๋ค.
dockerfile์ ์ด์ฉํ anaconda ์ค์น
[๋์ปค] Dockerfile๋ก conda ํ๊ฒฝ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ค์น๋ ๋์ปค ์์ฑํ๊ธฐ
- anaconda bash file์ wget์ผ๋ก ๋ค์ด๋ก๋ํ๊ณ , ํน๊ถ์ ์ค์ ํ๋ค.
RUN bash Anaconda3-2020.07-Linux-x86_64.sh -b -p /home/soft/anaconda
- shell script ํ์ผ์ uid๋ฅผ ์ค์ ํด์ ์ฌ์ฉํ ์ ์๋๋ก ํด์ effective user id๋ก ์คํํ๋๋ก ํ๋ค. ํน๊ถ์ ์ฃผ๋ ์ (shell๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋๋ก)
- Shell Options
- shellํ์ผ ์ญ์
- ํ๊ฒฝ๋ณ์ ์ค์
ENV PATH /home/soft/anaconda/bin:$PATH
- [docker] Dockerfile์์ PATH ํ๊ฒฝ ๋ณ์๋ฅผ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
Jupyter config ์ค์
WORKDIR /root/.jupyter
RUN jupyter notebook --generate-config
- config ํ์ผ ์์ฑ์ ์ํด work directory ๋ฅผ .jupyter ํด๋ ์๋๋ก ์ค์ ํ๊ณ ์์ฑํ๋ค.
# jupyter server setting
RUN echo "c.NotebookApp.password = 'sha1:b00ee0c0e13c:9b3f0c11356d567b4b9c516af4aeae5df5a2f1e4'" >> /root/.jupyter/jupyter_notebook_config.py
RUN echo "c.NotebookApp.ip = '0.0.0.0'" >> /root/.jupyter/jupyter_notebook_config.py
RUN echo "c.NotebookApp.password_require=True" >> /root/.jupyter/jupyter_notebook_config.py110a0e6ab9fe
RUN echo "c.NotebookApp.allow_root = True" >> /root/.jupyter/jupyter_notebook_config.py
RUN echo "c.NotebookApp.open_browser = False" >> /root/.jupyter/jupyter_notebook_config.py
- ํฐ๋ฏธ๋์ ์ฌ์ฉํด์ ์ธํ
ํ ๋๋ vim์ ์ผ๋๋ฐ, dockerfile์์ vim์ ์ธ ์๋ ์์ผ๋๊น echo + >>๋ก ์ฝ์
ํด์ฃผ๋ ๋ฐฉ์์ ์ทจํ๋ค.
- password ์ค์
- password๋ sha1๋ก ์ํธํํด์ ๋ง๋ค์๋ค. ์ง๊ธ์ 1234๋ค.์ปค์คํ ํด์ ๋์จ ๊ฑธ๋ก ๋์ฒดํด๋ ๋๋ค. ๋น๋๋ ๋ฌผ๋ก ๋ค์ ํด์ผํจ.
# generate security password from notebook.auth import passwd passwd(algorithm="sha1"
- ip๋ฅผ localhost๋ก ์ค์
- password require ์ค์
- root ์ ๊ทผ ์ค์
- password ์ค์
bash ์คํ ํด๋ ์ค์
- /root/.jupyter์์๋ ๋น์ฐํ anaconda ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด์ ์ ๋ง๋ค์ด๋ /home/soft๋ก ์ค์ ํ๋ค.
- ์ฒ์์ ์ ๋ฐ๊ฟ์คฌ๋ค๊ฐ ์๋ดค๋ค.
- [ jupyter ๋ ธํธ๋ถ ] bad config encountered during initialization : no such notebook dir :
# set jupyter server excute location WORKDIR '/home/soft'
Image build
$ docker buildx build --platform=linux/amd64 -t notebook:anaconda-jupyter .
- M1 Mac OS ์์ ๋น๋ํ ์ด๋ฏธ์ง๋ผ buildx์ ์ต์ ์ ์ถ๊ฐํ๋ค.
- cache ์์ผ๋ฉด ์ง์ง ์ค๋ ๊ฑธ๋ฆฐ๋ค(10๋ถ ๊ฑธ๋ฆผ)
- ์ ์์ด๋๊น ์ซ์ง ๋ง์.
Run Container
$ docker run -d -it -p {host-port}:8888 --name jupyter-server mysterias/notebook:anaconda/jupyter
- ํฌํธ ๋ฒํธ๋ jupyter notebook ๋ด๋ถ์์ ํฌํธ๋ฒํธ๋ฅผ 8888 ์ฐ๊ธฐ ๋๋ฌธ์ host๋ง ์ปค์คํ ํ๊ณ ๋์ปค ์ปจํ ์ด๋ ์ชฝ์ 8888๋ก ๊ณ ์ ํ๋ค.
Access into container
$ docker exec -it jupyter-server bash
- ์ด์ bash๋ก ์ ์ํด์
jupyter notebook
์ ๋ ฅํ๋ฉด ์๋ฒ๊ฐ ์ผ์ง๋ค.localhost:{own-port}
๋ก ์ ๊ทผํ์. - default password๋ 1234์ด๋ค.
Result
Docker hub์ ์ ์ฒด ๋์ปคํ์ผ๊ณผ ํจ๊ป ์ ๋ก๋ํด๋์๋ค. pullํด์ ์คํํด๋ณผ ์ ์๋ค :D
728x90