【概要】WSL 2(Windows Subsystem for Linux 2)は,Windowsで Linux実行環境を提供する.

【目次】

  1. 基本アーキテクチャ
  2. 特徴と利点
  3. 前準備
  4. Docker Desktopのインストール,Docker エンジンの起動
  5. 環境の動作確認
  6. 基本機能の動作確認
  7. Miniconda3を使用したUbuntu開発環境の構築手順と解説
  8. トラブルシューティング

サイト内の関連ページ

1.前準備

WSL 2(Windows Subsystem for Linux 2:WindowsでLinuxを実行するためのシステム)が有効化されていること.

WSL 2の有効化の手順は,次のページで説明

Windows上のLinux開発環境構築ガイド:WSL 2とUbuntuのインストール・設定・運用: 別ページ »で説明

  1. WSL 2の有効化状態確認:
    • コマンドプロンプトを起動する(例:Windowsキーを押し,「cmd」と入力)
    • 以下のコマンドを実行する:
    wsl --status
    
  2. WSL 2が使用するLinuxカーネルの更新

    セキュリティパッチや機能改善のためにアップデートが必要である.

    wsl --update
    
  3. 仮想化の確認:
    • タスクマネージャーを開く(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パッケージマネージャー)を使用したインストール

  1. Windowsで,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
  2. winget(Windowsパッケージマネージャー)が利用可能か確認する:
    winget --version
    
  3. Docker Desktopのインストール:
    winget install --scope machine Docker.DockerDesktop
    

B)手動でのインストール

  1. Docker Desktopのダウンロード:
    • 公式サイト(https://docs.docker.com/desktop/features/wsl/#download)にアクセス
    • インストーラをダウンロードする
  2. インストールの実行:
    • ダウンロードしたインストーラを実行する
    • 画面の指示に従ってインストールを完了する

2.2 Docker エンジンの起動と Docker Desktop の初期設定の確認

  1. Docker Desktopの起動:
    • Windowsのスタートメニューから起動する
  2. WSL 2の設定確認:
    • 画面右上の設定(Settings)ボタンをクリックする
    • 一般(General)タブを表示する
    • 「Use WSL 2 based engine」のチェックボックスが有効になっていることを確認する

3.構築手順と解説

1. 前提条件

2. NVIDIAドライバの確認

nvidia-smi

nvidia-smi コマンドを使用して,NVIDIAドライバが正しくインストールされ、動作しているかを確認する トラブルシューティング "features": {"buildkit": true}, "experimental": true, "runtimes": { "nvidia": { "path": "nvidia-container-runtime", "runtimeArgs": [] }

2. Dockerfile の作成

  1. コマンドプロンプトを起動する(例:Windowsキーを押し,「cmd」と入力)
  2. 以下のコマンドを実行する:
  3. notepad Dockerfile
    
  4. 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"]
    
  5. 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」で切断している.

各オプションの説明:

4.環境の確認

5. Docker 運用上の注意点

6. Miniconda 3 の説明

Miniconda3は,Pythonとconda(パッケージ管理システム)を含むシステムである.

Minicodna 3 の概要と機能

conda を使用してパッケージをインストールできる.condaは,パッケージの依存関係を自動的に解決し,互換性のあるバージョンをインストールする.また,独立した仮想環境を作成できる.Windows, Linux などに対応.Miniconda3は,Pythonの複数バージョンを管理し,共存させることもできる.

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

トラブルシューティング

環境の作成やアクティベートに失敗する場合:

環境の作成やアクティベートに問題がある場合,既存の環境を削除して新しい環境を作成する.以下のコマンドを使用する.必要なデータは事前に保存する必要がある.

conda remove --name  --all
conda create --name  python=
conda activate 

8.トラブルシューティング

8.1 wingetでのインストールの問題

  1. wingetの更新:
    winget upgrade
    
  2. キャッシュのクリア:
    winget source reset
    
  3. よくある問題と対処:
    • 「プログラムが見つかりません」エラー:
      winget source update
      
      でパッケージリストを更新する
    • インストールが途中で止まる場合:
      • 管理者権限でコマンドプロンプトを開いて実行する
      • または手動インストールに切り替える

8.2 コンテナとイメージトボニュームの破棄

注意:次を実行することにより,コンテナとイメージとボリュームは,実行中のものも含め,すべて破棄される.もとに戻すことはできない.重要なデータは事前に保存する必要がある.

  1. すべての実行中コンテナを停止して削除:

    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
  2. すべてのイメージを強制削除:

    for /f "tokens=*" %i in ('docker images -a -q') do docker rmi -f %i
  3. 未使用のリソースの一括削除:

    docker system prune -a --volumes
    • -a オプションは未使用イメージも含めて削除する

    • --volumes オプションは未使用ボリュームも削除する

  4. Docker Desktopの再起動:

    • タスクトレイのDockerアイコンを右クリック→「Restart」を選択する

  5. Docker設定の完全リセット(より根本的な問題の場合):

    • Docker Desktopを終了する

    • タスクトレイのDockerアイコンを右クリック→「Troubleshoot」→「Clean / Purge data」を選択する

    • 「Reset to factory defaults」オプションを選択する