LoginSignup
63
52

More than 1 year has passed since last update.

17言語をぶち込んだJupyter LabのDockerイメージを作ってみた

Last updated at Posted at 2019-02-12

いろんなプログラミング言語をちょっとかじってみるのに便利かなと思って、Jupyter Lab のDocker イメージを作ってみた。

launcher.png

欲張ったせいで約10GB(圧縮して4GB)以上もあるイメージになってしまった。

TL;DR

  • プログラミング言語の学習用にJupyter LabのDockerイメージを作った
  • 17言語をサポートしている
  • docker-compose up ですぐ使える
  • linux/amd64,linux/arm64 をサポート
  • イメージが大きくなってしまったので容量制限のない速いネットワークでPullしたほうがよい

サポートしている言語

サポートしている言語は次の通り。

Languages Version jupyter kernel
Python 3.10.0 IPython
C#(.Net6) 10.0 .NET Interactive
Elixir 1.12.3 ierl
Erlang OTP 24.0.4 ierl
F#(.Net6) 6.0.9 .NET Interactive
Go 1.19.1 Gophernotes
Java 18.0.2.1 Ganymede
JavaScript(Node.js) 18.8.0 tslab
Julia 1.8.2 IJulia
Kotlin 1.8.0 jupyter-kotlin
Powershell(.Net6) 7.2.6 .NET Interactive
R 4.1.3 IRKernel
Ruby 3.1.2 IRuby
Rust 1.64.0 EvCxR Jupyter Kernel
Scala 2.13.8 almond
Sparql SPARQL kernel
Typescript 4.8.2 tslab
  • Python では Plotlyと Dash, leaflet が利用できる。
  • R と Julia でも Plotly は利用できる。

なるべく新しいバージョンが使えるようにした。
が、Jupyter kernelによってバージョンが固定されてしまう言語もあり、最新バージョンになってないものもある。

Pythonを学ぶ動機としては機械学習があると思うが、そういう用途には無料でGPUも利用できるColaboratoryを使うことをおすすめする。

このイメージはあくまで言語学習用途を想定している。

言語の追加・入れ替え

5.5.0 で.NETのC#、F#、Powershellを追加した。@mototoke さんPRありがとうございました。
4.0.0 では初めて言語の入替を行った。
3.2.0 までは Groovy をサポートしていたが、4.0.0で落とした。理由はJVM言語で使っていたJupyterカーネルBeakerXの利用をやめたため。Python3.8にアップデートしようとすると、BeakerXが動かず、共存できなかった。で、Pythonのアップデートを優先して、BeakerXを切った。
Java,Kotlin,Scalaについては他にカーネルがあったが、Groovyにはなかったので落とすことなった。
まあ、JVM言語の中ではマイナーだし(参考:Google Trend)、今後自分で使うことはないだろうと1
代わりに、見聞きすることが増えてきたJuliaを追加した。

使い方

初回はDockerイメージをPullする。サイズが10GB弱もあるので容量制限のない速いネットワークでの作業をおすすめする2
次のコマンドを実行すると、コンテナが起動する。

$ mkdir your/jupyter/project/dir
$ cd your/jupyter/project/dir
$ wget https://raw.githubusercontent.com/HeRoMo/jupyter-langs/master/docker-compose.yml
$ docker-compose up

コンテナが立ち上がったら http://localhost:8888/ にアクセスすると Jupyter Lab が開く

リポジトリ

作ったノートはgitで管理してリポジトリにプッシュしておくと、Webでいつでも参照できて便利。

GithubもGitlabもノートをjupyter同様にレンダリングしてくれる。
Gitlabのほうがレンダリングが圧倒的に速くてストレスが少ないのでおすすめ。

ただ、コードのシンタックスハイライトはGithubの方が見やすい。

あとがき

作るのに思ったより時間がかかってしまったので、それぞれの言語をローカルにインストールしたほうが早かったような気がする。
が、今後はこれでコンテナを起動するだけになるかな。

Dockerイメージのサイズが大きくなりすぎてしまっていたのを幾分改善でできたのは良かった。
メンテナンスしやすいように各言語のインストール処理を分けている状況では更に大きく減らすのは難しいな。。。

  1. Groovyはオワコンというわけではなく、開発はApache Software Foundationのもとで継続しており、2020年2月にはバージョン3.0.0がリリースされている。

  2. バージョンを重ねる毎にサイズが増え、3.2.0では15.2GBにもなってしまった。流石にまずいと思って4.0.0ではminiconda3に切り替えて、9.84GBとなり、サイズを減らすことに成功した。

63
52
2

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
63
52