この記事で伝えたいこと
この記事で以下の困りごとにこたえていきたいと思います!
Dockerをインストールしたけど、具体的な開発環境の構築方法がわからない
Dockerをまだインストールしていない方は、以前にDockerのインストール方法について説明した記事があるのでそちらを参考にしてください。
Dockerを用いたJupyter環境構築
ざっくりとした流れは以下の通りです。
1. (必要に応じて)docker-composeをインストールする
2. 作業フォルダ・ファイルの作成
3. 必要なPythonライブラリをrequrement.txtにまとめる
4. Dockerfileを編集する
5. docker-compose.ymlを編集する
6. docker-compose.ymlファイルを実行する
この手順にしたがってインストールしていきます。
1.(必要に応じて)docker-composeをインストールする
そもそもDocker Composeを使う主な利点は、複数のコンテナをまとめて定義・管理・起動するためです。今回の場合、1つのコンテナしか利用しないので、必要性は小さいと感じますが、複数の設定(ポート、ボリューム、コマンドなど)を1つのYAMLファイル(docker-compose.yml)で定義し、一括で起動・管理できる点もメリットの一つだと思います。そのため、今回は、Docker Composeを用いて、Jpyter環境を簡単に構築していきます。
まず、Docker Composeを用いるために、linux上にdocker composeをインストールするします。なので、私の場合、「Ubuntu24.04」のターミナルを開いて以下のコマンドを実行します。
sudo apt-get install docker-compose-plugin
すると以下のような画面が出てくると思います。
hiro@MAIN:$ sudo apt-get install docker-compose-plugin
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
docker-compose-plugin
0 upgraded, 1 newly installed, 0 to remove and 39 not upgraded.
Need to get 0 B/12.8 MB of archives.
After this operation, 64.3 MB of additional disk space will be used.
Selecting previously unselected package docker-compose-plugin.
docker composeがインストールされているか確認のため、以下のコマンドを打ち込みます。
docker compose version
以下のような表示がされれば、インストールが完了しています。
hiro@MAIN:$ docker compose version
Docker Compose version v2.31.0
2.作業フォルダ・ファイルの作成
ファイルの構成について説明すると、まず、どこかの適当な場所にプロジェクト用のフォルダを作成してください。
そのフォルダ内に「テキストドキュメント」で新しいファイルを作成し、Dockerfile
,docker-compose.yml
,requirements.txt
を作成します。
Dockerfile
は拡張子なしで大丈夫です。
git
の中で作業する感じで考えています。
それぞれのファイルの意味や中身については後で説明します。
project/
│─ git
├─ Dockerfile
│─ docker-compose.yml
│─ requirements.txt
├─ .gitignore → Gitで追跡しないファイルの指定(今回は必要ないので省略)
└─ README.md → プロジェクト概要や手順説明(今回は必要ないので省略)
3.必要なPythonライブラリをrequirements.txtにまとめる
このプロジェクトで必要となるPythonライブラリをrequirements.txtにまとめます。
今回は適当に以下のようなライブラリをインストールするものを考えてみました。
ご自身のプロジェクトに必要なライブラリ名・バージョンへ変更してください。
numpy==2.2.1
pandas==2.2.3
matplotlib==3.10.0
seaborn==0.13.2
jupyter==1.1.1
上の内容をrequirements.txtに書き込みます。
(requirements.txtのもう少し知りたい方は以下の記事を参考にしてください。)
4.Dockerfileを編集する
Dockerfile
を一言で表すと、「Docker イメージを作成(ビルド)するためのレシピ(設計図)となるファイル」です。
もう少し詳しく知りたいよって方は以下の記事で詳しく説明してあるのでそちらを参照してください。
今回は、Python(3.13)をベースとして、requirements.txt
に記載されているライブラリをインストールし、jupyter lab
を立ち上げるDockerfileを作成しました。
別のPythonバージョンに変更したい場合は、基本的にはpython:<version>
に従って、version
の部分を変更してください。もう少しこだわりたい方は、以下のリンクを参照に適宜変更してください。
FROM python:3.13
# pip のアップグレード
RUN pip install --upgrade pip
# 依存関係をインストール
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# ホストからアクセスできるようにポート8888を開放
EXPOSE 8888
# コンテナ起動時にJupyterLabを起動
CMD ["jupyter", "lab", "--ip=0.0.0.0", "--port=8888", "--no-browser", "--allow-root"]
上のようにDockerfileを編集します。
以下にそれぞれのコマンドのざっくりとした意味を捕捉します。
FROM python:3.13
Python 3.13 をベースにしたイメージを使用し、コンテナ環境を構築。
RUN pip install --upgrade pip
pip を最新バージョンへ更新し、パッケージインストール時の不具合を予防。
COPY requirements.txt .
Python の依存関係リストをコンテナにコピー。
RUN pip install --no-cache-dir -r requirements.txt
依存関係をまとめてインストールし、キャッシュを残さない設定でイメージサイズを抑える。
EXPOSE 8888
コンテナ内で使用するポート8888のメタ情報。ホストと接続するには -p オプション等が必要。
CMD ["jupyter", "lab", ...]
コンテナ起動時に JupyterLab を立ち上げるコマンド。外部からのアクセスを許可するために IP, ポート、その他のオプションを設定。
5.docker-compose.ymlを編集する
docker-compose.yml
を一言で表すと、「コンテナの設定を整理し、1つでも複数でも簡単に起動や管理、共有ができるファイル」です。
もう少し詳しく知りたいよって方は以下の記事で詳しく説明してあるのでそちらを参照してください。
今回は、docker-compose.ymlファイルを用いることで、ホストのポート8888
を コンテナのポート8888
に割り当てています。また、ホスト側の ./git
ディレクトリ を コンテナ内の /workspace
ディレクトリ にマウントしています。
services:
jupyterlab:
build: .
image: jupyterlab
ports:
- "8888:8888"
volumes:
- ./git:/workspace
command: jupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root --NotebookApp.notebook_dir=/workspace
上の内容に、docker-compose.ymlファイルを編集します。
6.docker-compose.ymlファイルを実行する
「Ubuntu24.04」を立ち上げると以下のような画面だと思います。
ここから、docker-compose.ymlファイルがあるproject
のフォルダに移動します。
今回はホストPCのNドライブに格納したので、cd /mnt/n
をコマンドとして打ち込みます。
mnt
を使用することで、ローカルフォルダにアクセスできます。
移動できました。
確認のため、フォルダ内に何が入っているのか、dir
コマンドで確認します。
先ほど作成したproject
フォルダがありますね。
cd project
でフォルダ内に移動します。
dir
コマンドでフォルダの中身を確認し、先ほど作ったファイルがあることを確認します。
ここのディレクトリでdocker compose up
を打ち込みます。
そうすると、以下のような画面となります。
後ろのほうを見ると、
2つあるうちのどちらでもいいのですが、http:~
のリンクにWebブラウザを用いて、アクセスします。
これでJupyter環境の構築は終了です。
先ほどのgit
のフォルダ内を見ている状態なので、作成したフォルダ・ファイルは、先ほどのgit
内に保存されていきます。
最後に作業が終了した後は、まずは、ブラウザ上でjupterをシャットダウンさせます。
その後、docker compose down
でコンテナを閉じるようにしましょう。
何か不明点あれば、コメント欄に記載いただければと思います。
参考文献