Kubernetes

JupyterLab image 생성

아르비스 2022. 4. 20. 17:35

기존 사용하던 Image에서 추가 python library가 필요하여 기존 이미지 기반에 새로운 내용을 적용함

 

1. Docker File 만들기

FROM reddiana/jupyterlab-elyra

WORKDIR /home/jovyan

USER root

RUN pip install torchtext==0.9.0    # 설치가 필요한 library

RUN /usr/bin/python3 -m pip install --upgrade pip

ARG NB_USER=jovyan

EXPOSE 8888
  
ENV SHELL=/bin/bash
RUN echo "set -o vi"                                >> /etc/bash.bashrc &     echo "alias ll='ls -al'"                        >> /etc/bash.bashrc &     echo "# Container built at $(date +'%F %T %Z')" >> /etc/bash.bashrc
RUN echo "jovyan ALL=NOPASSWD: ALL" >> /etc/sudoers
USER jovyan
ENTRYPOINT ["tini" "--"]
CMD ["sh" "-c" "jupyter lab --notebook-dir=/home/${NB_USER} --ip=0.0.0.0 --no-browser --allow-root --port=8888 --NotebookApp.token='' --NotebookApp.password='' --NotebookApp.allow_origin='*' --NotebookApp.base_url=${NB_PREFIX}"]

 

2. Docker build

local에서 Image를 빌드 후 Docker Hub에 등록해야 한다.

# docker build --tag {생성할 Image 이름} {Dockerfile 경로}
$ docker build --tag jupyterlab-elyra .

Docker build가 성공했다면 Docker images를 통해서 image를 확인한다.

$ docker images
REPOSITORY                                                  TAG                        IMAGE ID       CREATED              SIZE
jupyterlab-elyra                                            latest                     a4fc85d85c16   About a minute ago   11.9GB

 

 

3.  Docker Hub에 올리기.

1) docker hub에 로그인 한다.

$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: ******
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

2) Image Tag를 적용한다.

# docker tag [ image name or Tag ] [ docker hub ID ] / [ push image이름 : 버전 ]

$ docker tag jupyterlab-elyra sncap/jupyterlab-elyra:latest

3) Docker Image Push

Docker Hub에 Image를 Push 한다.

$ docker push sncap/jupyterlab-elyra:latest
The push refers to repository [docker.io/sncap/jupyterlab-elyra]
69d80676f3e3: Preparing 
a66d1535e7dd: Preparing 
3520779b23a7: Preparing 
...
2c6ac8e5063e: Pushed 
cc967c529ced: Pushed 
latest: digest: sha256:2ddadeb32793180a82e802eefcfbeb70f75ed1ad3479c7cebd08a626763fxxx size: 13123

4) Docker Hub에 Image를 확인한다.

 

 

4. 사용하기

docker repository를 통해서 제공되므로 그냥 pull하면 된다.

$ docker pull sncap/jupyterlab-elyra:latest

 

 

끝!!

 

 

 

-----

기타

 

[Docker image 삭제]

Docker build중 오류가 발생하면, image는 계속 unknown으로 계속 생성되어 용량을 차지하게 된다.

이럴땐 지워야 한다.

 

Docker images를 통해서 IMAGE ID를 찾아서 docker rmi를 통해서 지운다.

$ docker images
REPOSITORY                         TAG                        IMAGE ID       CREATED          SIZE
jupyterlab-elyra                   latest                     a4fc85d85c16   22 minutes ago   11.9GB
sncap/jupyterlab-elyra             latest                     7d2b0ce11ccf   22 minutes ago   11.9GB
$ docker rmi -f a4fc85d85c16 7d2b0ce11ccf
Untagged: sncap/jupyterlab-elyra:latest
Untagged: sncap/jupyterlab-elyra@sha256:2ddadeb32793180a82e802eefcfbeb70f75ed1ad3479c7cebd08a626763f4c4a
Deleted: sha256:a4fc85d85c16c0ceee892ef41d792fd57661bbfe325c52ef631284709b0cf24f
Deleted: sha256:4a26129ad5f55e2f7e8991ddc4e686601756d6ba4b8ebe8b6227ce47c72fa04b
Deleted: sha256:9082eaeb9734ca439da40a255bda939d59f8545318a56547b6f40aac839f9a5e
...

 

 

Docker Image 실행 Container에 진입

# docker exec -it {이미지} bash
$ docker exec -it jupyterlab-elyra bash