1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WSL2上のDockerでJupyter環境の構築(Docker Compseで起動楽々)

Last updated at Posted at 2024-12-27

この記事で伝えたいこと

この記事で以下の困りごとにこたえていきたいと思います!

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              → プロジェクト概要や手順説明(今回は必要ないので省略)

こんな感じですね。
image.png

3.必要なPythonライブラリをrequirements.txtにまとめる

このプロジェクトで必要となるPythonライブラリをrequirements.txtにまとめます。
今回は適当に以下のようなライブラリをインストールするものを考えてみました。
ご自身のプロジェクトに必要なライブラリ名・バージョンへ変更してください。

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の部分を変更してください。もう少しこだわりたい方は、以下のリンクを参照に適宜変更してください。

Dockerfile
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 ディレクトリ にマウントしています。

docker-compose.yml
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」を立ち上げると以下のような画面だと思います。
image.png
ここから、docker-compose.ymlファイルがあるprojectのフォルダに移動します。
今回はホストPCのNドライブに格納したので、cd /mnt/nをコマンドとして打ち込みます。
mntを使用することで、ローカルフォルダにアクセスできます。
image.png
移動できました。
確認のため、フォルダ内に何が入っているのか、dirコマンドで確認します。
image.png
先ほど作成したprojectフォルダがありますね。
cd projectでフォルダ内に移動します。
dirコマンドでフォルダの中身を確認し、先ほど作ったファイルがあることを確認します。
ここのディレクトリでdocker compose upを打ち込みます。
そうすると、以下のような画面となります。
image.png
後ろのほうを見ると、
image.png

2つあるうちのどちらでもいいのですが、http:~のリンクにWebブラウザを用いて、アクセスします。
image.png

これでJupyter環境の構築は終了です。
先ほどのgitのフォルダ内を見ている状態なので、作成したフォルダ・ファイルは、先ほどのgit内に保存されていきます。
最後に作業が終了した後は、まずは、ブラウザ上でjupterをシャットダウンさせます。
その後、docker compose downでコンテナを閉じるようにしましょう。
image.png

何か不明点あれば、コメント欄に記載いただければと思います。

参考文献

1
2
0

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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?