AnacondaとJuliaをインストールしたDockerのコンテナを作るDockerfile
概要
- AnacondaとJuliaが両方使えるDockerfile書いた
- コンテナ起動時にJupyterLabを起動するシェルスクリプト付き
DockerfileとJupyterLabを起動するシェルスクリプト
本当はcookiecutterのパッケージにしてあるのだが,まだちゃんとデバッグできてないのでとりあえず動いてる生成物を貼っておく.
Dockerfileの上の方にある,user_id
とgroup_id
の設定だけホストのマシンと合わせておかないとバグると思う.
以下のDockerfileで作ったコンテナ起動時にその下に貼ってあるシェルスクリプトを実行するとTensorboardとJupyterLabを起動してくれる. 起動時にポートフォワーディングの設定もしておけばブラウザからlocalhostにアクセスすればそれらをホストのマシンからつつける.
コンテナに外部からアクセス(ポートフォワード) - Qiita
自分は計算用のサーバ上でコンテナを立ててSSHポートフォワーディング使ってコンテナにアクセスする,みたいな使い方をしてる.
SSH port forwarding - Example, command, server config
Juliaのインストール時にIJulia
もインストールしてるので,下図のようにJupyterLabのLauncherにJuliaも表示される.
FROM ubuntu:16.04 RUN apt-get -y update --fix-missing && apt-get -y upgrade RUN apt-get -y install sudo wget bzip2 git vim cmake # settings ARG user_name=ubuntu ARG user_id=1000 ARG group_name=ubuntu ARG group_id=1000 # create user RUN groupadd -g ${group_id} ${group_name} RUN useradd -u ${user_id} -g ${group_id} -d /home/${user_name} \ --create-home --shell /bin/bash ${user_name} RUN echo "${user_name} ALL=(ALL) NOPASSWD:ALL \n" >> /etc/sudoers RUN echo "Defaults env_keep += \"PATH\" \n" >> /etc/sudoers RUN chown -R ${user_name}:${group_name} /home/${user_name} # user settings ENV HOME /home/${user_name} ENV LANG en_US.UTF-8 USER ${user_name} # Intall Anaconda RUN sudo bash -c "echo 'export PATH=/home/${user_name}/anaconda3/bin:$PATH' N> /etc/profile.d/anaconda.sh" && \ wget --quiet https://repo.continuum.io/archive/Anaconda3-2019.03-Linux-x86_64.sh -O $HOME/anaconda.sh && \ /bin/bash $HOME/anaconda.sh -b -p $HOME/anaconda3 && \ rm $HOME/anaconda.sh ENV PATH $HOME/anaconda3/bin:$PATH WORKDIR /work RUN echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib' >> /home/ubuntu/.bashrc ENV LC_ALL C.UTF-8 ENV LANG C.UTF-8 # Update Anaconda RUN conda update --prefix /home/ubuntu/anaconda3 anaconda # Install Julia RUN wget --quiet https://julialang-s3.julialang.org/bin/linux/x64/1.4/julia-1.4.2-linux-x86_64.tar.gz \ -O $HOME/julia-1.4.2-linux-x86_64.tar.gz && \ cd $HOME && \ tar -xvzf julia-1.4.2-linux-x86_64.tar.gz ENV PATH $HOME/julia-1.4.2/bin:$PATH # ------------- Install Python packages ------------- RUN conda install -c conda-forge nodejs RUN jupyter labextension install @jupyter-widgets/jupyterlab-manager RUN pip install tensorboard tensorboardX # ------------- Install Julia packages ------------- RUN julia -e 'using Pkg; Pkg.add(["IJulia"]); using IJulia' RUN sudo apt-get install -y build-essential RUN julia -e 'using Pkg; Pkg.add(["PackageCompiler"]); using PackageCompiler' RUN sudo apt-get install -y qt5-default RUN julia -e 'using Pkg; Pkg.add(["UnicodePlots", "GR", "Plots"]); \ using UnicodePlots, GR, Plots' RUN julia -e 'using Pkg; Pkg.add(["Distributions"]); using Distributions' RUN julia -e 'using Pkg; Pkg.add(["LinearAlgebra"]); using LinearAlgebra' RUN julia -e 'using Pkg; Pkg.add(["PDMats"]); using PDMats' RUN julia -e 'using Pkg; Pkg.add(["ProgressBars"]); using ProgressBars; ' CMD ["/bin/bash"]
#!/bin/bash LC_ALL=C tensorboard --logdir="/work/log" --port=6006 --bind_all & jupyter lab --ip=0.0.0.0 --allow-root --port=8888 \ --NotebookApp.token='token' \ --NotebookApp.terminado_settings='{"shell_command": ["/bin/bash"]}'
参考
Anacondaのインストールも参考にしたページがあったけどメモが消失してしまった.
- Juliaのパッケージインストールの参考: