WSL2にDockerをインストールする
皆さん、こんにちは。技術開発グループのn-ozawanです。
兎がブルドーザーのように土をかき出す動画を見て癒されました。
本題です。
Windowsでdockerを利用したい場合にはDockerDesktopを利用することでしょう。しかしDockerDesktopは2022年ごろに移行期間を経て有料化(※1)したこともあり、(今更ではありますが)その代替としてWSLにdockerをインストール(※2)する方法を紹介します。
※1:中小企業(250未満の従業員かつ売上が1,000万ドル未満の企業)、個人利用、教育目的、非営利のOSSは引き続き無料で利用可能
※2:Docker CLI はこれまで通り無料で利用可能
目次
WSL2にDockerをインストールする方法
Dockerのインストール手順
WSL2にDockerをインストールします。OSはUbuntuになります。DockerDesktopがインストールされている場合はアンインストールしてください。インストール手順は基本的には公式サイトに記載されている手順通りになります。
Dockerをaptでインストールするのですが、そのためにはDockerのaptリポジトリを追加してあげる必要があります。
# GPGキーの追加
$ sudo apt-get update
$ sudo apt-get install ca-certificates curl gnupg
$ sudo install -m 0755 -d /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ sudo chmod a+r /etc/apt/keyrings/docker.gpg
# aptリポジトリの追加
$ echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt-get update
Dockerをインストールします。以下のコマンドは、公式のインストール手順ではdocker-composeが不足していたので、追加してあげています。
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose docker-compose-plugin
docker デーモンの自動起動を設定する
dockerを利用するにはdockerデーモンを起動しておく必要があります。WSLを起動するたびにデーモン起動をするのは面倒ですので、WSL2のsystemdを有効化して自動起動するようにします。WSLから以下のコマンドで/etc/wsl.conf
を編集します。
$ vi /etc/wsl.conf
/etc/wsl.conf
に以下を追加します。
[boot]
systemd=true
PowerShellなどから、wsl --shutdown
でWSLを再起動してください。
動作確認
最後に以下のコマンドで正常に動作すれば完了です。
$ sudo docker run hello-world
トラブルシューティング
DockerDesktopをインストールしていた場合、以下のようなエラーが出力されることがあります。
docker.credentials.errors.InitializationError: docker-credential-desktop.exe not installed or not available in PATH
これはDockerレジストリへの認証情報をDockerDesktopで管理しているためにエラーになっています。もし上記のようなエラーが出るようでしたら、~/.docker/config.json
を開いて、以下の行を削除してください。
"credsStore": "desktop.exe"
おわりに
色々調べてみると、docker以外にも多くのコンテナツールがあるんですね。Kubernetesもdockerを非推奨(非推奨と言っても、k8sでdocker以外のツールが使えるよという意味で、docker自体に問題がある訳ではないです)としているようですし、機会があればコンテナ関連の知見を深めて、docker以外のツールを試してみたいです。
ではまた。