以下
ポイントとしては、
- 日本語化している
- SSHサーバを起動させている
- Miniconda + conda-forgeリポジトリを利用している
- Jupyter Lab が起動できる
セキュリティ的にはいろいろNGなところがあるかと。
コード補完ツールのkiteを入れて動かしたかったんですが、動かなくて断念しました。
Dockerfile
FROM centos:centos7
# 管理ユーザ名
ARG user="[管理ユーザ名]"
# 管理ユーザパスワード
ARG pass="[管理ユーザ名のパスワード]"
# rootにパスワードを設定
RUN echo "root:[rootパスワード]" | chpasswd \
\
# yum.confの設定
&& sed -i "/^override_install_langs=/d" /etc/yum.conf \
\
# パッケージのインストール
&& yum update -y \
&& yum install -y \
git \
less \
openssh-server \
perl \
ruby \
sudo \
vim \
wget \
which \
\
# 日本語環境の設定
&& yum reinstall -y glibc-common \
&& localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 \
&& echo "ZONE=Asia/Tokyo" > /etc/sysconfig/clock \
&& echo "LANG=ja_JP.UTF-8" > /etc/locale.conf \
&& rm -f /etc/localtime \
&& ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
&& echo "export LANG=ja_JP.UTF-8" >> /etc/profile.d/locale.sh \
&& echo "export LANGUAGE=ja_JP:ja" >> /etc/profile.d/locale.sh \
&& yum clean all \
&& rm -rf /var/cache/yum/* \
\
# SSHサーバの設定
&& sed -i -e "s/^#UseDNS yes/UseDNS no/" /etc/ssh/sshd_config \
&& ssh-keygen -A \
\
# Minicondaのインストール
&& curl -LO https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \
&& bash ./Miniconda3-latest-Linux-x86_64.sh -bfp /opt/miniconda \
&& rm -f ./Miniconda3-latest-Linux-x86_64.sh \
&& echo 'PATH="/opt/miniconda/bin:$PATH"' >> /etc/profile.d/miniconda.sh \
\
# pythonモジュールをcondaでインストール
&& . /etc/profile.d/miniconda.sh \
&& conda config --add channels conda-forge \
&& conda config --remove channels defaults \
&& conda install -y python=3.9 \
&& conda update -y conda \
&& conda update -y --all\
&& conda install -y \
imageio \
ipywidgets \
jupyterlab \
matplotlib \
numpy \
nodejs \
openpyxl \
pandas \
scikit-learn \
scipy \
seaborn \
xeus-python \
&& conda clean -y --all \
\
# condaでインストールできないモジュールをpipでインストール
&& python -m pip install \
japanize-matplotlib \
mglearn \
&& rm -rf /root/.cache \
\
# JupyterLabの設定
&& mkdir /etc/jupyter \
&& echo "c = get_config()" >> /etc/jupyter/jupyter_notebook_config.py \
&& echo "c.NotebookApp.allow_remote_access = True" >> /etc/jupyter/jupyter_notebook_config.py \
&& echo "c.NotebookApp.allow_root = True" >> /etc/jupyter/jupyter_notebook_config.py \
&& echo "c.NotebookApp.ip = '0.0.0.0'" >> /etc/jupyter/jupyter_notebook_config.py \
&& echo "c.NotebookApp.open_browser = False" >> /etc/jupyter/jupyter_notebook_config.py \
&& echo "c.NotebookApp.port = 8888" >> /etc/jupyter/jupyter_notebook_config.py \
&& echo "c.NotebookApp.token = ''" >> /etc/jupyter/jupyter_notebook_config.py \
&& echo "c.LabBuildApp.minimize = False" >> /etc/jupyter/jupyter_notebook_config.py \
\
# JupyterLabの拡張機能のインストール
&& . /etc/profile.d/miniconda.sh \
&& jupyter labextension install \
@jupyterlab/debugger \
@jupyterlab/toc \
&& jupyter labextension update --all --minimize=False \
&& jupyter lab build --minimize=False \
\
# ユーザ作成
&& useradd ${user} \
&& usermod -aG wheel ${user} \
&& echo "${user}:${pass}" | chpasswd
# 作業ディレクトリ
WORKDIR /root/
# 使用ポート
EXPOSE 22 8888
# SSHサーバを起動する
CMD ["/usr/sbin/sshd", "-D"]