Docker + WSL2 のWindows環境を構築
今回、Windowsの環境でDockerを使えるようにし、趣味としてプログラミングが出来るようにしたい。
WSL2(Ubuntu)の準備
Ubuntu 24.04.01 LTS
今回利用するのは、Ubuntu 24.04.01 LTSです。

エラーの発生:0x8007019e
起動してみると・・・

エラーコード 0x8007019e は、「Windows Subsystem for Linux (WSL)」という機能が、Windows側でまだ有効になっていない ことを意味している。
エラーの対応:0x8007019e
- Linux用 Windows サブシステム
- Virtual Machine Platform (WSL2を利用する場合)
この二つの有効化が必要である。
Linux 用 Windfows サブシステムのアップデートなどが入る。
エラーの発生:0x80370102
エラーコードが 0x80370102 は「パソコンの仮想化機能(Virtualization)」の設定のことだ。
タスクマネージャーのパフォーマンス「CPU」を見ると「仮想化」の項目がある。ここが私は無効であった。
エラーの対応:0x80370102
BIOSメニューの中から「Virtualization Technology(Intel-VT)」や「SVM Mode(AMD-V)」といった項目を探し、Enabled(有効) に変更する。
問題解決
buntu 24.04.01 LTS を起動すると次のような画面が表示された。
登録が出来ました。
コマンドラインで次の内容を実行するとWSLのバージョンが確認可能だ。
wsl -l -v
Docker の導入
「セキュリティキー(GPG鍵)の取得」と「ダウンロード先(リポジトリ)の登録」を行う。
sodo apt updateで登録したDocker公式サーバーの情報を読み込み、パッケージリスト(カタログ)を最新にする。
# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
sudoコマンドを利用しているため、パスワードの要求がある。
設定したものを利用する。
Dockerの最新版をダウンロードする。
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Dockerサービスはインストール後に自動的に起動する。
次のコマンドで起動状況を確認することが可能です。
sudo systemctl status docker
実行することでインストールが成功することを確認してください。
hello-world
sudo docker run hello-world
docker compose version
dockerを利用する人は、docker composeも利用すると思われる。
確認しておきましょう。
GPUを仮想環境から利用
GPUを利用可能な環境であるか、調査しましょう。
nvidia-smi
GPU情報が表示されればLinux側からGPUが識別されています。
最後に、コンテナの中から識別できているかの調査もしましょう。
sudo docker run --rm --gpus all nvidia/cuda:12.0.0-base-ubuntu22.04 nvidia-smi
ここで問題がなかった場合はいいが…
エラーの発生:could not select device driver ""
Unable to find image 'nvidia/cuda:12.0.0-base-ubuntu22.04' locally
12.0.0-base-ubuntu22.04: Pulling from nvidia/cuda
0a0d0d55d972: Pull complete
aece8493d397: Pull complete
cb5efdcf30fe: Pull complete
56cb4663b3f5: Pull complete
6c0deaabac71: Pull complete
Digest: sha256:4e9da312e1f5affc0ab1b2cb3f1141e163849dcd850d66fe315138e82e85427d
Status: Downloaded newer image for nvidia/cuda:12.0.0-base-ubuntu22.04
docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]]
Run 'docker run --help' for more information
エラーメッセージ could not select device driver "" は、DockerがGPUを使うための「NVIDIA Container Toolkit」という連携ツールが入っていない(または設定されていない)ことを示している。
エラーの対応:could not select device driver ""
必要なツールのダウンロード
-
curl: インターネットからファイルをダウンロードするためのツール。 -
gnupg2: セキュリティキー(暗号鍵)を扱うためのツール。
sudo apt-get update && sudo apt-get install -y --no-install-recommends \
curl \
gnupg2
リポジトリの登録
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /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' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
NVIDIAのリポジトリから最新を取得
sudo apt-get update
「NVIDIA Container Toolkit」の最新の安定バージョン or 特定バージョンの導入
安定
sudo apt-get install -y nvidia-container-toolkit
特定(私が実施)
export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.18.1-1
sudo apt-get install -y \
nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}
Dockerの設定ファイル(/etc/docker/daemon.json)を自動編集して、GPU機能を使えるようにしている。
インストール直後にDockerは、NVIDIAツールの存在を知りません。
このコマンドを実行することで、Dockerの設定に「NVIDIAのランタイムを使ってね」という記述が追記される。
sudo nvidia-ctk runtime configure --runtime=docker
Dockerの再起動
sudo systemctl restart docker
最後に、再度コンテナ内から確認できるか調査しましょう。
sudo docker run --rm --gpus all nvidia/cuda:12.0.0-base-ubuntu22.04 nvidia-smi
GPUの情報がコンテナ内から確認できた。
サービスの起動と自動化
sudo systemctl enable docker で再起動後の自動起動を設定。
sudo systemctl start docker または sudo service docker restart でサービスを即時起動し、設定を反映する。
$USERがsudo なしで docker コマンド**を実行できるようにする。
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker $USER
参考一覧










