はじめに
WSL(Windows Subsystem for Linux) では、Windows 上でネイティブの Linux を起動することができます。WSL では、Docker をインストールして、イメージを起動することもできます。
ここでは、WSL に Docker CE をインストールする方法を説明します。Docker Desktop は、使用していません。
前提条件
- Windows 11
- もしくは、Windows 10 バージョン 2004(20H1) Build 19041 以降
- WSL (ディストリビューション: Ubuntu) インストール済 + sytemd の有効化
- セットアップは、Microsoft ストア版 WSL(Windows Subsystem for Linux) インストールを参照ください。
パッケージ リポジトリへ Docker を追加
パッケージ一覧の更新を行い、必要なパッケージをインストールします。
$ sudo apt-get update
$ sudo apt-get install ca-certificates curl gnupg lsb-release
公式の GPG 公開鍵をダウンロードして、/etc/apt/keyrings/docker.gpg として保存します。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
パッケージ リポジトリに docker を追加します。
$ 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 CE のインストール
パッケージ一覧を更新します。
$ sudo apt-get update
Docker CE, Docker Compose をインストールします。
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
hello-world イメージを実行して、正しくインストールされたことを確認します。
$ sudo docker run hello-world
...
Hello from Docker!
...
ここで、「docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.」と表示されて、正しく実行できない場合は、systemd が有効化されていないため、docker demon が起動されていません。WSL で systemd を有効化 してください。systemd を有効化することで、でLinux 起動時に docker デーモンを起動できます。もしくは、sudo service docker start
で手動で、デーモンを起動することもできます。
次に、docker グループにカレントユーザーを追加して、特権なしで docker を起動できるようにします。(オプション)
$ sudo usermod -aG docker $USER
グループへの追加を有効化するために、シェルを終了して、再度、シェルを開きます。
sudo なしで、hello-world イメージを実行します。
$ docker run hello-world
...
Hello from Docker!
...