またーり くおんつ ノート

お勉強した初歩的なことを書くチラシの裏

Dockerでの分析環境の用意

普段だと業務用にDockerfileをかなりカスタマイズして使っているが、 手元にはないので、折角だからまた1から作る.

本質的にはケースバイケースで用途に応じて作るべきだが、 分析系のイメージをどかっと纏めてしまっている(まぁ楽だし)

とりあえず下記のようにDockerfileを書いてビルド.
ダウンロードに時間がめちゃかかる.

あんまり綺麗じゃないけどこんな感じで作った.
とりあえず暫定的なものだけ入れてるのでXGBoostとかTensorflowはまだ入れてない.
(まぁ簡単に入れられるし.)

FROM nvidia/cuda:8.0-cudnn6-devel

ENV LANG=C.UTF-8 LC_ALL=C.UTF-8

# Install minimum
RUN apt-get update --fix-missing && \
    apt-get install -y --no-install-recommends wget bzip2 ca-certificates \
            libglib2.0-0 libxext6 libsm6 libxrender1 \
            git mercurial subversion

# Install miniconda
RUN echo 'export PATH=/opt/conda/bin:$PATH' > /etc/profile.d/conda.sh && \
    wget --quiet https://repo.continuum.io/miniconda/Miniconda3-4.1.11-Linux-x86_64.sh -O ~/miniconda.sh && \
    /bin/bash ~/miniconda.sh -b -p /opt/conda && \
    rm ~/miniconda.sh

# Install python and libraries
ARG python_version=3.6
ENV PATH /opt/conda/bin:$PATH
RUN conda install -y python=${python_version}
RUN pip install ipdb pytest pytest-cov python-coveralls coverage==3.7.1 pytest-xdist pep8 pytest-pep8 pydot_ng && \
    pip install jupyter Pillow scikit-learn notebook pandas matplotlib nose pyyaml six h5py && \
    conda clean -yt

RUN apt-get install -y vim

RUN mkdir /root/.jupyter
RUN echo "c.NotebookApp.open_browser = False" >> /root/.jupyter/jupyter_notebook_config.py && echo "c.NotebookApp.ip = '*'" >> /root/.jupyter/jupyter_notebook_config.py
RUN echo "c.NotebookApp.password = 'sha1:06098785498a:fb0c37e1aa37c0d31449f023485a67a83e5064a4'" >> /root/.jupyter/jupyter_notebook_config.py

# port for jupyter notebook
EXPOSE 8888

WORKDIR /root

IPに特に制限かけてない&rootでの起動なので、外部に公開されている環境では注意.

nvidia-dockerからベースイメージを始めてるけど、特にGPU使う予定なければubuntuイメージからとか alpineからとかでもなんでもいいと思う.
(あんまりまだポータビリティが気になったことがないからだけど…)

最近はdocker-composeからの起動が多いので、それをセットアップしてからAWS ECSで動作させてみよう.