Windows11 WSL2 Ubuntu 24.04 LTS Docker miniconda3

Docker コンテナ miniconda3

continuumio/miniconda3 イメージを利用して miniconda3 GPU コンテナを構築します。
win11 + wsl2 + Ubuntu 2404 + docker + GPUコンテナ + continuumio/miniconda3
参考サイト
win11+WSL+Docker Desktop(GPU container)+miniconda+intel MKLで環境構築
continuumio/miniconda3
【備忘録】WSL2とDockerでGPU + Miniconda環境を構築

Doker GPU 環境を整える

Doker で GPU を使用できる環境を整えます。

  1. wsl2 Ubuntu のインストール

    Windows11 WSL2 Ubuntu 概要
    Windows11 WSL2 Ubuntu 24.04 LTS 概要
    を参考にして Windows11 WSL2 Ubuntu 24.04 LTS をインストールしてください。

  2. Doker CE のインストール

    Docker CE インストール概要
    を参考にして Windows11 WSL2 Ubuntu 24.04 LTS に Docker CE をインストールしてください。

  3. GPU ドライバのインストール

    WSL2 Ubuntu の場合 GPU ドライバのインストールは Windows の中にインストールするのでした。
    WSL2 Ubuntu Python GPU 環境
    を参考にして GPU ドライバをインストールしてください。
    インストールされているかは
    yamada@yama:~$ nvidia-smi
    で確認できます。
    私の場合、しばらく放置していたら
    536.40 → 581.29
    にアップデートされていました。
    かなり頻繁に変更されているようです。
    対応をお薦めします。

    yamada@yama:~$ nvidia-smi
    [結果]
    Sat Sep 13 18:04:26 2025
    +---------------------------------------------------------------------------------------+
    | NVIDIA-SMI 580.82.10              Driver Version: 581.29       CUDA Version: 13.0     |
    |-----------------------------------------+----------------------+----------------------+
    | GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
    |                                         |                      |               MIG M. |
    |=========================================+======================+======================|
    |   0  NVIDIA GeForce GTX 1650        On  | 00000000:01:00.0  On |                  N/A |
    | 32%   52C    P0              N/A /  75W |    508MiB /  4096MiB |      1%      Default |
    |                                         |                      |                  N/A |
    +-----------------------------------------+----------------------+----------------------+
    
    +---------------------------------------------------------------------------------------+
    | Processes:                                                                            |
    |  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
    |        ID   ID                                                             Usage      |
    |=======================================================================================|
    |    0   N/A  N/A        22      G   /Xwayland                                 N/A      |
    +---------------------------------------------------------------------------------------+
    

    CUDA Version:13.0 でした。
    これはメモしておきます。
    確認の場面で使用します。

  4. CUDA Toolkit のインストール

    CUDA Toolkit のインストール
    を参考にして CUDA Toolkit をインストールします。
    CUDA は最新版を入れてしまうと旧版でないと動かない Python パッケージに遭遇することがありますが そんなときは Docker の中に旧版の CUDA を入れて対処します。

  5. cuDNN のインストール

    cuDNN 概要
    を参考にして cuDNN のインストールをします。
    cuDNN は最新版を入れてしまうと旧版でないと動かない Python パッケージに遭遇することがあります。
    そんなときは Docker の中に旧版の cuDNN を入れて対処します。
    今回 cuDNN のインストール後、cuDNN のバージョン確認が上手くできないことが判明しました。
    UbuntuでCUDAのバージョンを確認する方法【簡単コマンド解説】
    を参考にして cuDNN のバージョン確認をしました。
    $ dpkg -l | grep "cudnn"
    又は
    $ dpkg -l | grep libcudnn
    でできるはずです。

Ubuntu に NVIDIA Container Toolkit をインストール

GPU を持つ Ubuntu で Docker 経由で CUDA を使用する場合に必要となる NVIDIA Container Toolkit をインストールします。
なお、nvidia-docker2 は 2024年1月 に NVIDIA Container Toolkit に置き換わりました。
【Ubuntu 24.04】NVIDIA Container Toolkit(nvidia-docker)のインストール方法
NVIDIA コンテナ ツールキットのインストール[英文]
WSL2+Ubuntu24.04+Docker+GPUでつくる機械学習環境
が参考になります。
[その他一言]
NVIDIA Container Toolkit を用いた場合、CUDA 環境が用意されている docker image を使用すれば、 ローカルの CUDA インストールは不要です。
よって、ローカル環境への CUDA や CuDNN のインストールを省略することも可能です。
しかし基本的には、ローカル環境にも CUDA や CuDNN をインストールしましょう。

  1. GPG キー(公開鍵)の取得

    curl コマンドで GPG キーを取得します。
    この時、-fsSL の curl オプションを指定します。
    -f サーバエラーが発生したら黙って終了する
    -s 進捗状況やエラーを表示しない
    -sS 上記でエラーは表示する
    -L 要求したページにリダイレクトが掛かっていた場合に追従する GPG キーは
    https://nvidia.github.io/libnvidia-container/gpgkey
    にあるので
    $ curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey
    とすると GPG キーを取得することができます。

  2. GPG キーをバイナリ形式にして保存

    gpg --dearmor -o で GPG キーをバイナリ形式にして
    /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
    に保存します。
    sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

  3. curl -s -L https://nvidia.github.io/ ・・・

    https://nvidia.github.io/libnvidia-container/stable/deb/
    から nvidia-container-toolkit.list を取得します。
    この時 sed コマンドにより修飾されます。

  4. sed 's#deb https://#deb ・・・・・ https://#g'

    sed コマンドを使用して
    nvidia-container-toolkit.list
    を取得するのですが、ここがややこしい。
    sed コマンドとは Stream EDitor の略で、入力されたテキストデータを1行ずつ読み込んで 指定した処理を適用して出力を行います。
    主に文字列の置換や抽出に用いられます。
    例1)
    $ echo '一郎くんおはようございます。' | sed 's/一郎/二郎/'
    一致する文字列を全て置換
    一郎 を 二郎 に置換
    正規表現の g オプションを用いて一致する文字列を全て置換できます。
    [結果]
    二郎くんおはようございます。
    例2)
    $ echo 'abcdefabc' | sed 's/abc/def/g'
    [結果]
    defdefdef
    例--ここまで--)
    となります。
    https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list
    を見ると
    deb https://nvidia.github.io/libnvidia-container/stable/deb/$(ARCH) / ・・・ ①
    #deb https://nvidia.github.io/libnvidia-container/experimental/deb/$(ARCH) / ・・・ ②
    の二つの URL を見ることができます。
    この時
    sed サブコマンド「#」
    を適用すると
    「#」とその行の残りの部分は(コメントとして扱われて)無視されます。
    よって、#deb から後に書かれた URL② は無視されます。
    すなわち、deb の URL① から nvidia-container-toolkit.list を読み込んでねと指示しているようです。
    [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg]
    で GPG キーは
    /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
    にありますので照合してくださいとお願いしています。
    まとめると以下のようになります。

    curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
      sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g'
    
  5. sudo tee /etc/apt/sources.list.d/

    sudo tee でコマンドの結果をファイルに出力します。
    /etc/apt/sources.list.d/nvidia-container-toolkit.list
    にインストールしたい NVIDIA Container Toolkit の APT リポジトリリストが出力されました。


ここまでで、NVIDIA Container Toolkit をインストールするための準備説明がやっと終わりました。
引き続き、インストール準備をまとめます。


  • NVIDIA Container Toolkit インストール準備まとめ に進む
  • 70VPS に戻る