Docker Desktopが一部条件において有料化しているので、今後のために、WSL内でDockerを実行する方法をここに記載します。
開発環境(2021/11/24時点)
- Windows 11
- WSL2がインストールされている
WSLにUbuntuをインストール
今回は、WindowsのコマンドラインからUbuntuをインストールします。Windows Storeからもインストールが可能です。
wsl --install Ubuntu-20.04
Ubuntuのインストールが完了後に、Ubuntuのウィンドウが表示されるので、ユーザ名とパスワードを入力して、以下のコマンドで最新の状態にしてください。
sudo apt update && sudo apt upgrade -y
Dockerのインストール
公式サイトの「Install Docker Engine on Ubuntu」と「Post-installation steps for Linux」を参考にしています。順次、Ubuntu上から実行してください。sudo実行時のパスワードは、初めに入力したパスワードです。
- 必要なパッケージをインストールします
sudo apt-get install -y ca-certificates curl gnupg lsb-release
2. GPGキーを追加します
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
3. Dockerのリポジトリを追加します。
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
4. パッケージ情報をアップデートして、Docker Engineとcontainerdの最新をインストールします
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
5. ServiceからDockerを起動します
sudo service docker start
6. ログインユーザにDockerコマンドの権限追加
sudo usermod -aG docker $USER
newgrp docker
7. sudoなしでコマンドを実行して確認します
docker run hello-world
8. docker-composeのインストールします
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
9. docker-composeがインストールされていることを確認します
docker-compose --version
補足
Systemdが使用できないので、Windows再起動時には、再度、「 sudo service docker start 」を実行してください。
wsl.confの場合
wsl.confを作成して、wsl起動時に実行するコマンドを記載します。
sudo vi /etc/wsl.conf
[boot]
command="service docker start"
.bashrcの場合
.bashrcに起動スクリプトを追加します。
echo 'sudo service docker status || sudo service docker start' >> ~/.bashrc
visudoを実行します。
sudo visudo
sudoersに追加します。ユーザ名は、rootとして、パスワードなしでservice dockerを実行できるようになります。
ユーザ名 ALL = (root) NOPASSWD: /usr/sbin/service docker *
コメント