【概要】WSL 2(Windows Subsystem for Linux 2)は,Windowsで Linux実行環境を提供する.
- Dockerイメージのビルド(Dockerfileからのイメージ作成): docker build -t myubuntu2404:1.0 .
- イメージからのコンテナの作成と実行: docker run --name myubuntu --restart unless-stopped -p 8888:8888 -it myubuntu2404 /bin/bash
- 実行中の myubuntu コンテナに接続:docker exec -it myubuntu /bin/bash
- 停止中の myubuntu コンテナを実行中(Up)にする:docker start myubuntu
- 実行中の myubuntu コンテナを停止(Exited)する:docker stop myubuntu
- 実行中あるいは停止中のコンテナの一覧表示:docker ps -a
【目次】
- 基本アーキテクチャ
- 特徴と利点
- 前準備
- Docker Desktopのインストール,Docker エンジンの起動
- 環境の動作確認
- 基本機能の動作確認
- Miniconda3を使用したUbuntu開発環境の構築手順と解説
- トラブルシューティング
【サイト内の関連ページ】
1.前準備
WSL 2(Windows Subsystem for Linux 2:WindowsでLinuxを実行するためのシステム)が有効化されていること.
- WSL 2の有効化状態確認:
- コマンドプロンプトを起動する(例:Windowsキーを押し,「cmd」と入力)
- 以下のコマンドを実行する:
wsl --status
- WSL 2が使用するLinuxカーネルの更新
セキュリティパッチや機能改善のためにアップデートが必要である.
wsl --update
- 仮想化の確認:
- タスクマネージャーを開く(Ctrl + Shift + Esc)
- 「パフォーマンス」タブで仮想化が有効になっているか確認する
2. Docker Desktopのインストール,Docker エンジンの起動
Docker Desktopにより,画面を用いてビジュアルに,Dockerコンテナ, Dockerイメージ,Dockerボリュームの一覧表示,状態確認,基本的な操作を行うことができる.
Docker Desktopの起動は,Windowsのスタートメニューから起動できる.Docker デスクトップを起動することにより,Docker エンジンが起動する
2.1 インストール
Dockerエンジンを構成するDockerデーモンとクライアントを含むDocker Desktopのインストール手順を示す.
インストールは,以下の2つの方法から選択可能である.
A)winget(Windowsパッケージマネージャー)を使用したインストール
- Windowsで,コマンドプロンプトを管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
- winget(Windowsパッケージマネージャー)が利用可能か確認する:
winget --version
- Docker Desktopのインストール:
winget install --scope machine Docker.DockerDesktop
B)手動でのインストール
- Docker Desktopのダウンロード:
- 公式サイト(https://docs.docker.com/desktop/features/wsl/#download)にアクセス
- インストーラをダウンロードする
- インストールの実行:
- ダウンロードしたインストーラを実行する
- 画面の指示に従ってインストールを完了する
2.2 Docker エンジンの起動と Docker Desktop の初期設定の確認
- Docker Desktopの起動:
- Windowsのスタートメニューから起動する
- WSL 2の設定確認:
- 画面右上の設定(Settings)ボタンをクリックする
- 一般(General)タブを表示する
- 「Use WSL 2 based engine」のチェックボックスが有効になっていることを確認する
3.構築手順と解説
1. 前提条件
- WSL2インストール済み
- Docker Desktop for Windowsインストール済み
- NVIDIAグラフィックドライバーインストール済み
2. NVIDIAドライバの確認
nvidia-smi
nvidia-smi コマンドを使用して,NVIDIAドライバが正しくインストールされ、動作しているかを確認する トラブルシューティング "features": {"buildkit": true}, "experimental": true, "runtimes": { "nvidia": { "path": "nvidia-container-runtime", "runtimeArgs": [] }
2. Dockerfile の作成
- コマンドプロンプトを起動する(例:Windowsキーを押し,「cmd」と入力)
- 以下のコマンドを実行する:
- Dockerfile を次のように作成して保存する
次のDockerfileは,Ubuntu 24.04 LTS(Long Term Support:長期サポート版)のイメージを取得し,Python環境を構築している.Miniconda3を用いてPython 3.12環境を作成し,NumPy,Pandas等の科学技術計算ライブラリを導入している.Jupyter NotebookをPort 8888で起動するよう設定し,開発環境としてcmake,git等の基本ツールも導入している
FROM ubuntu:24.04 # 環境変数の設定 ENV PATH=/opt/conda/bin:$PATH \ SHELL=/bin/bash \ DEBIAN_FRONTEND=noninteractive # システムパッケージのインストール RUN apt-get update && apt-get upgrade -y && \ apt-get install -y wget curl git cmake build-essential ufw && \ rm -rf /var/lib/apt/lists/* # Miniconda3のインストール RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && \ bash Miniconda3-latest-Linux-x86_64.sh -b -p /opt/conda && \ rm Miniconda3-latest-Linux-x86_64.sh # condaの初期設定とdev環境の作成 RUN /opt/conda/bin/conda init bash && \ echo ". /opt/conda/etc/profile.d/conda.sh" >> /root/.bashrc RUN /opt/conda/bin/conda create -n dev python=3.12 -y && \ /opt/conda/bin/conda install -n dev -y numpy pandas matplotlib scikit-learn jupyter pylint pytest black && \ echo "conda activate dev" >> /root/.bashrc # Jupyterの設定 RUN mkdir -p /root/.jupyter && \ echo "c.NotebookApp.ip = '*'" >> /root/.jupyter/jupyter_notebook_config.py && \ echo "c.NotebookApp.port = 8888" >> /root/.jupyter/jupyter_notebook_config.py && \ echo "c.NotebookApp.allow_root = True" >> /root/.jupyter/jupyter_notebook_config.py # 作業ディレクトリの設定 WORKDIR /workspace # Jupyterのポートを公開 EXPOSE 8888 # コンテナ起動時のコマンド CMD ["bash", "-c", ". /opt/conda/etc/profile.d/conda.sh && conda activate dev && \ jupyter notebook --allow-root --ip=* --port=8888 --no-browser"]
- Dockerfileをもとにイメージを作成
notepad Dockerfile

2. Dockerイメージのビルド(Dockerfileからのイメージ作成)
コマンドプロンプトで,次の「docker build」コマンドを実行する.次のコマンドは,カレントディレクトリのDockerfileを基にイメージを生成する.作成したイメージには,識別用の名前(例:myubuntu2404)とバージョン管理用のタグ(例:1.0)を設定できる.
その後,「docker images」コマンドにより,ローカルに保存された全てのイメージを一覧形式で確認できる.
docker build -t myubuntu2404:1.0 .
docker images

3.作成されたイメージからのコンテナの作成と実行
コマンドプロンプトで,次のコマンドを実行する.
docker run --name myubuntu --restart unless-stopped -p 8888:8888 -it myubuntu2404:1.0 /bin/bash
次の実行画面では,Linuxコマンドの pwd, ls を実行した後,「exit」で切断している.

各オプションの説明:
--name myubuntu
:コンテナに識別用の名前を付与する--restart unless-stopped
:明示的に停止しない限り,クラッシュ時に自動的に再起動する-it
:対話的な操作を可能にし(-i
),疑似TTY(端末)を割り当てる(-t
)-p 8888:8888
: Jupyter Notebook のためにポート8888のマッピングを行うubuntu2404:1.0
:使用するベースイメージである/bin/bash
:コンテナ起動時に実行するコマンドである
4.環境の確認
- 実行中の myubuntu コンテナに接続.「exit」で切断.
docker exec -it myubuntu /bin/bash exit
- 実行中の myubuntu コンテナで,Pythonバージョンの確認
docker exec myubuntu python --version
- conda環境の確認
docker exec myubuntu conda info
- conda環境の確認
docker exec myubuntu conda env list
- インストールされたパッケージの確認
docker exec myubuntu conda list
5. Docker 運用上の注意点
- ボリュームの内容をtarファイルにバックアップ
docker run --rm -v app-data:/data -v $(pwd):/backup ubuntu tar czvf /backup/app-data-backup.tar.gz /data
- バックアップからボリュームを復元
docker run --rm -v app-data:/data -v $(pwd):/backup ubuntu tar xzvf /backup/app-data-backup.tar.gz -C /
--rm
オプションは,コマンド実行後にコンテナを自動的に削除する- バックアップファイルは定期的に外部ストレージにコピーすることを推奨する
- Docker コンテナのリソース監視
# コンテナのリソース使用状況を確認 docker stats myubuntu # コンテナのプロセスを確認 docker top myubuntu # コンテナのログを確認 docker logs myubuntu # 直近の100行のログを表示 docker logs --tail 100 myubuntu
- リソース使用量に監視する.必要に応じてリソース制限を設定するときに利用できる.
- 異常な動作やエラーを早期に発見するため,ログを確認する.
6. Miniconda 3 の説明
Miniconda3は,Pythonとconda(パッケージ管理システム)を含むシステムである.
Minicodna 3 の概要と機能
conda を使用してパッケージをインストールできる.condaは,パッケージの依存関係を自動的に解決し,互換性のあるバージョンをインストールする.また,独立した仮想環境を作成できる.Windows, Linux などに対応.Miniconda3は,Pythonの複数バージョンを管理し,共存させることもできる.
- 環境の作成:conda create -n <env_name> python=<version>
- 環境のアクティベート:conda activate <env_name>
- パッケージのインストール:conda install <package_name>
- 環境の一覧表示:conda env list
- 環境の削除:conda remove -n <env_name> --all
- 環境のバックアップ:conda env export > environment.yml
Miniconda3とpipの併用
Miniconda3とpipを同じ環境で使用する際は注意が必要である.基本的には,どちらか一方を使用することが推奨されているが,特定のパッケージがcondaで利用できない場合にはpipを使用することになる.その際は,新しいconda環境を作成して,その環境内でpipを使用することが強く推奨される.これにより,他の環境に影響を与えることがなくなる.--upgrade-strategyは,依存関係が必要な場合にのみ,関連するパッケージをアップグレードするオプションである.
conda create -n myenv python=<version>
conda activate myenv
pip install --upgrade-strategy only-if-needed <package_name>
Miniconda3 環境設定のバックアップと再現
# 現在の環境設定をエクスポート
conda env export > environment.yml
# エクスポートした環境の内容確認
cat environment.yml
# 他の環境での環境を再現
conda env create -f environment.yml
environment.yml
には,Pythonバージョンやパッケージ情報が記録される- パッケージのバージョンも明示的に記録されるため,環境の再現が可能である
トラブルシューティング
環境の作成やアクティベートに失敗する場合:
環境の作成やアクティベートに問題がある場合,既存の環境を削除して新しい環境を作成する.以下のコマンドを使用する.必要なデータは事前に保存する必要がある.
conda remove --name --all
conda create --name python=
conda activate
8.トラブルシューティング
8.1 wingetでのインストールの問題
- wingetの更新:
winget upgrade
- キャッシュのクリア:
winget source reset
- よくある問題と対処:
- 「プログラムが見つかりません」エラー:
でパッケージリストを更新する
winget source update
- インストールが途中で止まる場合:
- 管理者権限でコマンドプロンプトを開いて実行する
- または手動インストールに切り替える
- 「プログラムが見つかりません」エラー:
8.2 コンテナとイメージトボニュームの破棄
注意:次を実行することにより,コンテナとイメージとボリュームは,実行中のものも含め,すべて破棄される.もとに戻すことはできない.重要なデータは事前に保存する必要がある.
すべての実行中コンテナを停止して削除:
for /f "tokens=*" %i in ('docker ps -a -q') do docker stop %i for /f "tokens=*" %i in ('docker ps -a -q') do docker rm %i
すべてのイメージを強制削除:
for /f "tokens=*" %i in ('docker images -a -q') do docker rmi -f %i
未使用のリソースの一括削除:
docker system prune -a --volumes
-a
オプションは未使用イメージも含めて削除する--volumes
オプションは未使用ボリュームも削除する
Docker Desktopの再起動:
タスクトレイのDockerアイコンを右クリック→「Restart」を選択する
Docker設定の完全リセット(より根本的な問題の場合):
Docker Desktopを終了する
タスクトレイのDockerアイコンを右クリック→「Troubleshoot」→「Clean / Purge data」を選択する
「Reset to factory defaults」オプションを選択する