Julia実行環境として利用できるコンテナイメージ3つを調べてみた

2021.09.06

データアナリティクス事業本部の鈴木です。

Juliaは動的型付けでありながら、科学技術計算などにも耐える高い実行性能を備えた言語です。

The Julia Programming Language

Juliaは非常に簡単にインストールできますが、コンテナを使って実行環境を準備したいと思い、どのような方法があるのかを調査しました。

検証概要

調査したイメージ

今回は以下の3つのイメージを調べました。

  1. Docker Hubの公式イメージ
  2. Jupyter Docker Stacksのdatascience-notebookイメージ
  3. Visual Studio Code Remote - ContainersのJulia用開発コンテナ

検証環境

  • macOS Catalina バージョン10.15.7
  • docker desktop Version 3.4.0
  • Visual Studio Code バージョン: 1.58.2
  • Remote - Containers拡張機能 v0.187.1(プレビュー版)

やってみる

1.Docker Hubの公式イメージ

Official Imageにイメージがあるので、最初にこちらを利用してみましょう。

Julia - Official Image | Docker Hub

まず、イメージをプルします。

docker pull julia

REPLを起動して、文字列を表示させてみましょう。以下のコマンドを実行します。

docker run -it --rm julia

REPLが起動しました。

REPLの実行結果

次に、ローカルで事前に準備しておいたスクリプトを実行してみましょう。以下のsample.jlを作成しておきます。

sample.jl

println("Hello world from container!")

以下のコマンドで実行します。

docker run -it --rm -v "$PWD":/usr/myapp -w /usr/myapp julia julia sample.jl 

# 出力結果
# Hello world from container!

標準出力に文字列が表示されました。

2.Jupyter Docker Stacksのdatascience-notebookイメージ

Jupyter Docker Stacksdatascience-notebookにはJuliaがインストールされているので、Juliaの実行環境として使うことができます。

JUPYTER_ENABLE_LAB環境変数を切り替えて、Jupyter NotebookまたはJupyter Labを起動することが可能です。

今回は以下のdocker-compose.ymlでJupyter Labを起動してみます。

docker-compose.yml

version: "3"
services:
    datascience-notebook:
        image: jupyter/datascience-notebook:514883dc662a
        volumes: 
            - ./:/home/jovyan/work
        ports:
            - 8888:8888
        container_name: datascience-notebook-cntainer
        environment:
            - JUPYTER_ENABLE_LAB=yes

docker-compose upで起動した後、ログインします。

LauncherからJuliaのNotebookを選択します。

JupyterLabのトップ

試しにHello worldを表示するスクリプトを実行してみます。

println("Hello world from container!")

実行結果

こちらはセルのアウトプットに文字列を表示することができました。

3. Visual Studio Code Remote - ContainersのJulia用開発コンテナ

VS Code Remote / GitHub Codespaces Container DefinitionsにJulia用の開発コンテナ定義が公開されているので利用します。

vscode-dev-containers/containers/julia at main · microsoft/vscode-dev-containers

Remote - Containers拡張機能のインストール

VSCodeのRemote - Containers拡張機能を利用します。未インストールの場合はインストールが必要です。

Remote - Containers - Visual Studio Marketplace

VS Code Remote Developmentの機能の一つになります。VS Code Remote Developmentについては Visual Studio Code Remote Development をご確認ください。

※ Remote - Containers拡張機能は記事執筆時点ではプレビューになります。以下の動作確認はv0.187.1で行いました。

Julia dev containerで開く

MicrosoftのVS Code Remote / GitHub Codespaces Container DefinitionsのレポジトリからJulia用の階層を開きます。

.devcontainer/以下を取得して、VSCodeの開発用コンテナで開きたいディレクトリに配置します(以下の画像をご参照ください)。

.devcontainerディレクトリの配置

ウィンドウ左下のマークをクリックすると、コマンドパレットが開くので、Reopen in Contaiinerを押します。

コンテナで開く手順

正常に開くことができると、左下にコンテナ名が表示されます。

juliaコンテナで開くことができたとき

試しにHello worldを表示するスクリプトを実行してみます。

sample.jl

println("Hello world from container!")

サンプルスクリプト

右上のを押して、実行方法を選択します。今回はREPLで実行してみます。

実行方法の選択

ターミナルに文字列が出力されました。

REPLでの実行結果

最後に

今回は、Juliaの実行環境として利用できる3つのコンテナイメージを紹介しました。

使うイメージによって、コマンドライン・Jupyter・VSCodeとインターフェースが変わってくるので、慣れ親しんでいるものを選んで使うと良さそうです。また、インストールが必要な各種ライブラリは、コンテナに初めから用意しておきたい場合はDockerfileを作成する必要があります。こちらの方法も別の記事で紹介できればと思います。