0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DockerでCentOS7+Python3.9+JupyterLab+SSHdなイメージを作る

Last updated at Posted at 2021-03-28

以下

ポイントとしては、

  • 日本語化している
  • 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"]
0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?