Jupyterlab의 기본 이미지를 사용하여 Custom Notebook을 만든다.
1. Dockerfile 생성
FROM python:3.6
WORKDIR /home/vacance
USER root
RUN pip install jupyter -U && pip install jupyterlab
RUN apt-get update && apt-get install -yq --no-install-recommends \
apt-transport-https \
build-essential \
bzip2 \
ca-certificates \
curl \
g++ \
git \
gnupg \
graphviz \
locales \
lsb-release \
openssh-client \
sudo \
unzip \
vim \
wget \
zip \
emacs \
python3-pip \
python3-dev \
python3-setuptools \
&& apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
RUN echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
RUN apt-get update
RUN apt-get install -y kubectl
RUN pip install jupyterlab && \ jupyter serverextension enable --py jupyterlab --sys-prefix
ARG NB_USER=vacance
EXPOSE 8888 ENV
NB_USER $NB_USER
ENV NB_UID=1000
ENV HOME /home/$NB_USER
ENV NB_PREFIX /
CMD ["sh", "-c", "jupyter lab --notebook-dir=/home/vacance --ip=0.0.0.0 --no-browser --allow-root --port=8888 --LabApp.token='' --LabApp.password='' --LabApp.allow_origin='*' --LabApp.base_url=${NB_PREFIX}"]
[필수 실행명령]
- 작업 디렉토리 설정 : --notebook-dir=/home/vacance
- 쥬피터 노트북 네트워크 설정 : --ip=0.0.0.0
- Root 권한 설정 : --allow-root
- Port 설정 : --port=8888
- 인증해제 설정 : --NotebookApp.token='' --NotebookApp.password=''
- orign 설정 : --NotebookApp.allow_origin='*'
- Base URL 설정 : --NotebookApp.base_url=$NB_PREFIX (NB_PREFIX는 바드시 변수로 선언되어야함)
2. Docker 빌드
docker build -t spansite/dship:kflow-jupyterlab-custom01 .
(생략)
3. Docker 푸시 (도커 레지스트리에 접근 가능해야함. Dockerhub 사용 시 "docker login" 수행)
docker push spansite/dship:kflow-jupyterlab-custom01
4. Kubeflow Central Dashboard에서 새로운 Notebook Server를 생성하고, 빌드한 커스텀 이미지를 사용하여 Notebook 생성
5. 결과확인
- Dashboard에서는 아래와 같이 Notebook의 상태를 확인할 수 있다.
- k9s에서는 Notebook이 생성되는 네임스페이스를 통해 아래와 같이 Notebook Pod의 상태와 Log를 확인할 수 있다.
단순히 Jupyter lab을 실행하는 Custom Notebook을 만들어보았다. 하지만 실제로 머신러닝 트레이닝을 위해서는 fairing, pipeline Library를 포함하여 Custom Notebook을 만들어야 한다.
그러면 Jupyter Notebook에서 fairing과 pipeline을 통해 python 코드를 kubeflow에 배포하여 머신러닝 학습 및 서비스가 가능하다.
'ML & AI > kubeflow' 카테고리의 다른 글
MiniKF - Tutorial 따라하기_Taxi Cab #4 (0) | 2020.10.13 |
---|---|
MiniKF - Tutorial 따라하기_Taxi Cab #3 (0) | 2020.10.13 |
MiniKF - Tutorial 따라하기_Taxi Cab #2 (0) | 2020.10.06 |
MiniKF - Tutorial 따라하기_Taxi Cab #1 (0) | 2020.10.05 |
MiniKF - Jupyter Notebook 커스텀(ML) (0) | 2020.09.28 |