🐳

WSL2の中にDockerをインストールする

2023/03/23に公開

はじめに

Docker for Windowsを使わずに、純UbuntuにDockerを入れるような感じでWSL2(Ubuntu20.04)にDockerを入れる手順です。

今までDocker for Windowsを使っていましたが、イメージの保存先を変えてもCドライブ固定になってしまう現象が起きていました。

https://zenn.dev/ijiwarunahello/articles/498acbe0d28f8b

どうしたもんかいの状態でしたが、別ドライブに移動したWSLの中にDockerをインストールすれば、イメージの保存先を変えることと同じだ!とある日ようやく気づいたのでメモしておきます。

ちなみに保存先を変えたい主な理由は、Cドライブの容量削減です(250GBしかないので…)

環境

  • Windows 10
    • バージョン:21H2(OSビルド 19044.2604)
  • WSL2
    • Ubuntu 20.04
    • WSLのバージョン:1.1.3.0

後述するsystemdを使ってDockerを起動させたい場合、WSLのバージョンが0.67.6以上必要なので注意

インストール

インストール方法は公式を参考にしつつ、

https://docs.docker.com/engine/install/ubuntu/

こちらでsystemdを使って起動させるところなどを補完するとよいと思います。

https://dev.to/felipecrs/simply-run-docker-on-wsl2-3o8

以下、自分が実行したコマンドです。

install method
# 古いDockerが入っているかもしれないのでアンインストール
sudo apt remove docker docker-engine docker.io containerd runc
# 準備
sudo apt update
sudo apt install \
  ca-certificates \
  curl \
  gnupg \
  lsb-release
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 最新版のDockerインストール
sudo apt update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Dockerグループに参加
sudo usermod -aG docker $USER

Dockerデーモンの起動

バージョン0.67.6以降のWSLを使っている場合、systemdを使って起動できます。

その場合、WSL内のwsl.confファイルに以下を追記する。

/etc/wsl.conf
[boot]
systemd=true

wsl --shutdownしてWSLを再起動。

docker --versionを実行してエラーが出なければ無事起動できている。

docker --version
Docker version 23.0.1, build a5ee5b1

0.67.6以下の場合、serviceコマンドを使うことで起動できる(先のリンクに手順あり)。

動作確認

hello-worldしてみます。

docker run hello-world

無事動作しました。

docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:ffb13da98453e0f04d33a6eee5bb8e46ee50d08ebe17735fc0779d0349e889e9
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

最後に

WSLのメモリをもっと増やせばいいかもしれませんが、なんとなく重い気がします(現状8GB割り当て)

Docker for Windowsでイメージの保存先が変えれるようになったら出戻りします😇

Discussion