🐳

Windows (WSL)にDocker Desktop無しでDocker Community Editionをインストールする

2023/04/25に公開

背景

  • Docker Desktopは従業員が250人を超える組織、または利用規約に従って年間収益が1,000万ドルを超える組織の場合、ユーザーごとの有料サブスクリプションが必要
  • WindowsでDocker Desktopを使わずにDockerを使いたい

ゴール

  • WindowsでDocker Desktopを使わずにDockerを使えるようにする

手順

WSL インストール

Windows自体にはDocker Desktopしか入らないため、Windows上でUbuntuを動かす、Windows Subsystem for Linux (WSL)をインストールする必要があります。
https://learn.microsoft.com/ja-jp/windows/wsl/install

  • PowerShellを管理者権限で開いて以下のコマンドを打つ
wsl --install

Docker Community Edition インストール

基本はUbuntuでのインストール方法と同じです。コマンドプロンプトやPowerShellではなく、WSLのターミナルで行う必要があります。

リポジトリのセットアップ

  • パッケージインストール
sudo apt update
sudo apt install ca-certificates curl gnupg
  • /etc/apt/keyringsディレクトリ作成
  • GPG(GNU Privacy Guard)キーをダウンロードして/etc/apt/keyringsに配置する
    • パッケージの配布先をチェックするためのもの
  • chmod a+r:全体に読み取り権限を与える
sudo install -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
  • リポジトリのセットアップ
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

Docker インストール

  • パッケージインストール
  • インストールの確認
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker run hello-world

ここまででインストールは完了しますが、sudo無しでdockerを打つとエラーになります。

dockerコマンドをsudo無しで打てるようにする

dockerグループの作成

  • docker groupの作成
  • ユーザーにdockerグループを追加する
  • ユーザーのグループを確認
sudo groupadd docker
sudo usermod -aG docker $USER
groups $USER

WSL初期化時にDocker Daemonを開始する

Windows11の場合

  • /etc/wsl.confをVSCodeで開く
code /etc/wsl.conf
  • 以下を追加して保存
[boot]
systemd=true

Windows10の場合

  • ~/.profileをVSCodeで開く
code ~/.profile
  • 以下を追加して保存
if service docker status 2>&1 | grep -q "is not running"; then
    wsl.exe -d "${WSL_DISTRO_NAME}" -u root -e /usr/sbin/service docker start >/dev/null 2>&1
fi

ターミナルを再起動して、dockerコマンドがsudo無しで打てるか確認

wsl.exe --shutdown
docker run hello-world

これで完了です。お疲れ様でした。

備考

  • docker-composeは、docker composeになりました

参考

Discussion