search
LoginSignup
4

More than 5 years have passed since last update.

posted at

updated at

独自の julia docker image を作ってみる

モチベーション

julia lang の和書が2017/10/1にNTSから出版されました。

Juliaデータサイエンス

これを機に触れてみようと思い立ち、
書籍では v0.4.x
最新は v0.6.0 とのことでこの二つのカーネルを
jupyter-notebook で実行できるようにすることがゴールです。
ついでに v0.6.0 環境には CmdStan を入れておきます。

調査

まったく julia について知らなかったので
公式をチェック
公式 julialang.org
juliabox.com という素敵なサービスも発見
容量が500MBまでとのこと. また, CmdStan も使えない.
juliabox.com
公式 docker image を参考に、Dockerfile を作ってみます

作ったDockerfile

datarefine/julialang-docker

docker run

docker pull datarefine/julialang-docker:latest
docker run --rm -it -p 8888:8888 --name julia datarefine/julialang-docker:latest

docker run 実行後、下記のログが標準出力に表示されるので、そのURLへアクセスする

[C 15:41:32.244 NotebookApp]
 Copy/paste this URL into your browser when you connect for the first time,
 to login with a token:
   http://0.0.0.0:8888/?token=xxxxxx

オプションについて

  • --rm: コンテナを止めた後に、そのまま削除
  • -i: attach していなくても標準出力につないだままにしてくれる
  • -t: 仮のttyに割り当ててくれる
  • --name: コンテナの名前をつける
  • -p host_port:container_port: デフォルトではネットワークは bridge であり,host側のポートとcontainer側のポートをつないでくれる
  • --cpuset-cpus="": 0-3/1,3など, どの CPU で container を実行するか指定
  • --memory="": 4g,8g,など container が使うメモリ数

その他

docker run --rm -it --name julia datarefine/julialang-docker:latest /bin/bash

bashが起動し, juliaコマンドが使えます

container 上で実行しているのでcontainer を止めると、
jupyter にアップロードしたファイルは消えます。

公式と変更した点

  • BaseImage ubuntu:16.04 -> phusion/baseimage
    • プロセスコントロールとしてrunitが導入されている.
  • miniconda -> miniconda3
    • ENV[CONDA_JL_HOME"]="/path/to/miniconda3"
    • この環境変数により IJulia や Conda のパッケージインストールの時に、指定したminiconda3を利用する(Using an already existing Conda installation)
  • jupyter-notebook 上で v0.4.7 と v0.6.0 のカーネルを利用できるように.
  • CmdStan をインストール. julia から使えるように.

課題

  • libcairo2 によって x11 が入ってしまって、イメージサイズが大きくなってしまう ->小さくしたい

(windows への docker 実行環境導入は別記事で書きます)
書きました.
https://qiita.com/ysaito8015@github/items/1ec358275227d32cbd44

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
What you can do with signing up
4