Dockerとは
Dockerとは、Docker社が開発している、コンテナ型の仮想環境を作成、配布、実行するためのプラットフォームです。
上記記事でWindows 10へのインストール方法を紹介しています。ぜひご覧ください。
JupyterLabとは
JupyterLab(ジュピター・ラボ)とは、ブラウザ上で動作する対話型実行環境です。
2017年2月にv0.16.0がリリースされたのを皮切りに、2019年6月にv1.0.0の正式版がリリースされました。2021/08/25時点ではv3.1.8が最新版となっています。
上記のようにセルと呼ばれる単位ごとに実行でき、その結果をインタラクティブに表示してブラウザから確認できるのが特徴です。
データを可視化しながら見たり、機械学習向けにデータクレンジングすることと相性が良いことから、機械学習エンジニアやデータサイエンティストに人気があります。
Dockerイメージ図
Dockerfile
とdocker-compose.yml
を利用してコンテナを作成するのですが、わかりにくいと思うのでイメージを図にしました。
下記の流れでコンテナを立ち上げます。
Dockerfile
に記載された内容にしたがってdocker build
コマンドによって、Docker HubにあるDocker imageをローカルにダウンロードするdocker-compose.yml
に記載された内容にしたがってdocker-compose up
コマンドによって、Docker imageからDocker containerを起動する
Docker上のJupyterLabイメージ図
Docker上にあるJupyterLabのイメージ図です。
このあと示すdocker-compose.yml
で、ポート番号を8008:8888で指定したときはこのようになります。
JupyterLabサーバ自体はポート番号8888番でアクセスを受ける設定になっていますが、コンテナの外からはポート番号8008番でアクセスすることになります。
実施環境
- Windows 10 バージョン20H2(OSビルド 19042.1165)
- Docker Desktop 3.6.0(Docker Engine 20.10.8)
実施環境はこちらです。
JupyterLab構築手順
今回は、python 3.9.6のイメージをベースに、JupyterLabをインストールしたイメージをビルドして作り、コンテナを起動することにします。
構成
まず、Dockerfile
とdocker-compose.yml
は同じディレクトリにいれておきます。
本記事では、WindowsのE:\workの場所に配置しました。
Dockerfile
Dockerfile
は上記の内容になります。
下記のことを実施しています。
- python 3.9.6をベースに
- pipをアップグレードして、JupyterLabをインストール
- コンテナのワークディレクトリを/JupyterLabに、リッスンポート番号を8888番に設定
- コンテナ起動時に
jupyter-lab
コマンドを実行して、下記設定をおこなう- IPアドレス接続制限なし
- ポート番号8888でアクセスを受ける
- ブラウザを起動しない
- rootでの実行を許可
- トークンなしでのアクセスを許可
- 作業ディレクトリを/JupyterLabに設定
docker-compose.yml
docker-compose.yml
は上記の内容になります。
python396_minimum
というイメージからpython396_minimum_container
という名前のコンテナを起動するように指定しています。
ポート番号については、8008番で受けてコンテナ内は8888番に流す、という設定です。
PowerShellでの構築
Dockerfile
とdocker-compose.yml
を作ったらPowerShell
を開いてE:\workに移動します。
docker build
コマンドでDocker HubからDockerfile
に記載の内容にしたがってDocker imageを作ります。
イメージのサイズは約1.1GBになります。
イメージが作り終わったらdocker-compose
コマンドでコンテナを起動させます。-d
オプションでバックグラウンドで起動になります。
Docker Desktop上で見ると、このように見えます。
JupyterLabの確認
コンテナが起動したらブラウザでJupyterLabにアクセスできるようになります。
http://localhost:8008/labにアクセスすると、JupyterLab環境が表示されます!
JupyterLabでHello, world!
それでは、JupyterLabでHello, world!
を表示させてみましょう。
Notebookにある「Python 3 (ipykernel)」をクリックします。
セルと呼ばれる場所にprint('Hello, world!')
と入力して、Shift+Enterを押すと「Hello, world!」が表示されます!
まとめ
DockerでJupyterLab環境を構築する方法を紹介しました。
Dockerが使えるといろいろな環境・サービスをお試し感覚で使えるので便利です。Docker Hubにさまざまなイメージがおいてあるので、探して試してみましょう!
JupyterLabはセルごとに実行でき、実行結果がすぐ表示されるため非常にプログラミングしやすいです。是非利用してみましょう!