기존 사용하던 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