Docker × Jupyter × VS Codeで機械学習環境を構築する

Dockerで機械学習環境を簡単構築!VS CodeとJupyterを組み合わせて、チーム全員が同じ環境で開発できる方法を解説。環境の違いで悩まされることなく、すぐに機械学習の実験に集中できる実用的なセットアップ手順を初心者向けに分かりやすく紹介します。
目次
1 はじめに
機械学習の実験をしていると、「動いたはずのノートブックが別の PC では動かない」 という経験は誰しもあるはずです。そこで登場するのが Docker × VS Code Dev Containersです。Dockerコンテナに Jupyter Lab を丸ごと詰め込み、リポジトリごと共有すれば
git clone → Reopen in Container → 実行
だけで“まったく同じ”環境に立てるという再現性を手に入れられます。
本稿では、公式イメージ jupyter/datascience-notebook:python-3.11
をベースに VS Code から一発で立ち上がる構成をゼロから作成する手順を解説します。
参考にした記事
2 事前準備
あらかじめ、Docker Desktop と Visual Studio Code (VS Code) のインストールが必要です。
さらに、VS Code で Docker と Dev Containers の拡張機能をインストールしてください。
3 プロジェクト全体像
ここでは”my-project”というディレクトリを作成します。ディレクトリ名は適宜変更してください。
my-project/
├── .devcontainer/ # ← VS Code が読む定義一式
│ ├── Dockerfile
│ ├── docker-compose.yml
│ ├── devcontainer.json
│ └── requirements.txt # ← Python 依存をまとめる
└── work/ # ← ノートブック/コードを置く作業ディレクトリ
.devcontainer/
を Git で共有すれば、メンバーは 「git clone → Reopen in Container」 だけで同一環境に入れます(Docker Compose サービスも自動起動)。
4 プロジェクトを作成
mkdir -p ~/my-docker/my-project/.devcontainer
cd ~/my-docker/my-project
mkdir work
cd .devcontainer
以降のファイルはすべて .devcontainer/
配下に配置します。
5 Dockerfileを作成
次のコマンドでDockerfile
を作成します。
touch Dockerfile
.devcontainer/Dockerfile
の内容:
# ── ❶ ベースイメージ ────────────────────────────
FROM jupyter/datascience-notebook:python-3.11
# ── ❷ タイムゾーン・ロケール(日本なら入れると便利)──
USER root
ENV TZ=Asia/Tokyo
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
USER jovyan
# ── ❸ OS パッケージ(apt)を追加したい場合 ──────────
# RUN apt-get update && \\
# apt-get install -y --no-install-recommends \\
# libgl1-mesa-glx && \\
# apt-get clean && rm -rf /var/lib/apt/lists/*
# ── ❹ Python パッケージ(Pip/Poetry/Conda どれでも可)──
COPY requirements.txt /tmp/requirements.txt
RUN pip install --no-cache-dir -r /tmp/requirements.txt
なぜ jupyter/datascience-notebook
?
- [Jupyter Docker Stacks] の公式イメージで Pandas / NumPy / scikit-learn / matplotlib 等が一通り入り、試験も毎週 CI で回っています。
- 必要に応じて CUDA 対応イメージ(
cuda12-python-3.11
など)へ差し替えるだけで GPU も即利用できます。
6 requirements.txt を作成
.devcontainer/requirements.txt
にPythonライブラリを列挙します。
最低限の例:
numpy==1.26.4
pandas==2.2.2
matplotlib==3.9.2
matplotlib-inline==0.1.7
scikit-learn==1.5.1
7 docker-compose.yml を作成
例として、以下のように.devcontainer/docker-compose.yml
を記述します。
services:
notebook:
build: .
container_name: myproject-jupyter
# ❶ ホスト⇆コンテナのファイル共有
volumes:
- ../work:/home/jovyan/work
# ❷ Jupyter を公開するポート
ports:
- "8888:8888"
# ❸ Notebook UI を JupyterLab に固定
environment:
JUPYTER_ENABLE_LAB: "yes"
# ❹ MacSilicon で Intel イメージを動かすとき
# platform: linux/amd64
8 devcontainer.json を作成
{
"name": "My-Jupyter-DevContainer",
// ❶ Compose ファイルとサービス名
"dockerComposeFile": "docker-compose.yml",
"service": "notebook",
// ❷ どのフォルダを“ワークスペース”として見せるか
"workspaceFolder": "/home/jovyan/work",
"remoteUser": "jovyan",
// ❸ VS Code の拡張を自動インストール
"customizations": {
"vscode": {
"extensions": [
"ms-python.python",
"ms-toolsai.jupyter",
"ms-azuretools.vscode-docker"
],
"settings": {
"python.defaultInterpreterPath": "/opt/conda/bin/python"
}
}
},
// ❹ ビルド後に一度だけ実行
"postCreateCommand": "pip check",
// ❺ dotfiles / GitHub Codespaces 互換
"features": {}
}
dockerComposeFile
と service
のペアを指定することで、VS Code は Compose up → attach → Workspace open まで自動化してくれます。
9 コンテナを起動して入る
1: Dev Container へ接続
プロジェクトを VS Code で開き、コマンドパレット ⌘⇧P
→ Dev Containers: Reopen in Container を実行。ステータスバー左端が >< Dev Container:
に変われば接続完了です。
2: 拡張機能の自動インストール
devcontainer.json
の customizations
に列挙した Python / Jupyter / Docker 拡張が自動で導入され、完了後に VS Code が再読み込みされます。左側の Activity Bar に “Jupyter” アイコンが現れることを確認してください。
3: ノートブックの作成・オープン
新規作成 はエクスプローラーで + New Jupyter Notebook
を選択。既存 ノートは work/
内の .ipynb
ファイルをダブルクリックして開きます。
4: カーネルを確認・切り替え
ノート右上の Kernel 表示が Python 3.x (myproject-jupyter) になっているか確認しましょう。違う場合はクリックして Select Kernel → Python 3 (ipykernel) を選択します。
5: セルの実行
コードを入力して Shift Enter
。実行中は行番号左に *
、終了すると実行時間が表示されます。
10 おわりに
以上で Docker × Jupyter × VS Code を組み合わせた再現性の高い機械学習開発環境が完成しました!
ポイントを振り返ると、
1: 環境のコード化
.devcontainer/
以下に Dockerfile・Compose・設定を閉じ込めることで、環境構築をリポジトリの一部としてバージョン管理できる。
2: ワンステップ起動
VS Code の Reopen in Container で自動ビルド&アタッチ。以後は docker compose up -d
でいつでも再開可能。
3: 依存の追加と保守が簡単
requirements.txt
にパッケージを追記して Rebuild Container するだけ。キャッシュを残さないオプションでイメージもスリム化。
4: マルチプラットフォーム/GPU も対応
jupyter/datascience-notebook
系は arm64 と amd64 のマルチアーキタグを提供。GPU が必要になったら CUDA 対応タグへ差し替える。
この仕組みをプロジェクトの雛形としておけば、新メンバーでも 「clone して 5 分後には学習が走る」 状態を再現できます。本記事を参考にして、ぜひ Docker × Jupyter × VS Code で機械学習環境を構築してみてください。