Windowsを使っていて、開発で何かと困る問題――「Docker Engineが使えない!」を、この記事では解決します。
今までLinuxとDocker Engineで開発していたのに、急に明日からWindowsで開発してくれ、と言われたことありませんか? 私はあります。折角、整えた環境を手放し、また一から環境構築をし直す…。環境構築はエンジニアから、多大な時間と労力とやる気を奪います。早くプログラミングさせてくれ!と私は切実に思います。
少しでもエンジニアの皆さんの負担を軽くするべく、また私と同じく環境構築だけに1週間以上時間を奪われないようにするためにも、WindowsでDocker Engineを使う方法を解説します。
手順
WSLのインストール
初めに、WindowsのLinux仮想環境を整えましょう。WSL (Windows Subsystem for Linux) を使用します。
(都合上、以降の画像はすべてWindows10ですが、Windows11だと思ってください。家のパソコンのスペックが低すぎてWindows11入りませんでした…)
タスクバーの検索ボックスに「cmd」と入力します。

「コマンドプロンプト」を右クリックし、「管理者として実行」をクリックしましょう。

”このアプリがデバイスに変更を加えることを許可しますか?”と出ましたら、「はい」を選択してください。
以下のコマンドをコマンドプロンプトに入力して、WSLの最新版をインストールします。
wsl --install --no-distribution

”このアプリがデバイスに変更を加えることを許可しますか?”と出ましたら、再び「はい」を選択してください。インストールが終了しましたら、パソコンを再起動します。
Ubuntuのインストール
パソコンを再起動したら、タスクバーの検索ボックスに「cmd」と打ち、「コマンドプロンプト」をクリックします。
※「管理者として実行」はしなくて大丈夫です。
以下のコマンドを入力して、インストール可能なディストリビューションを確認します。
wsl -l -o

今回は、この中から「Ubuntu-24.04」をインストールします。
以下のコマンドを入力して、「Ubuntu-24.04」をインストールします。
wsl --install -d Ubuntu-24.04
インストールが完了すると、ユーザ作成に移ります。以下の情報を入力してユーザを作成しましょう。好きなように設定していただいても大丈夫です。
(パスワードは画面に文字が表示されませんが、打った文字は正常に入力できております。入力し終わった段階でEnterキーを押しましょう)
Enter new UNIX username: user
New password: user
Retype new password: user

以下の行が最後に表示されたらインストール完了です。

以下のコマンドを入力して、Ubuntuを終了しましょう。
exit
WSLのミラーモード (Windows11限定)
ここで大変重要な設定をしたいと思います。特に、社内のネットワークを使っている方や、頑丈なネットワークセキュリティをお持ちの方に必見の内容となります。
通常のWSLのモードでUbuntuを起動すると、ホストとは異なるIPアドレスが仮想環境に勝手に割り当てられます。これが、ネットワーク接続の障壁になることが多々あります。(私は社内のプロキシに引っ掛かりました)
そこで、ホスト(Windows)側のネットワーク設定を引き継ぐ、ミラーモードを設定します。社内のプロキシを容易に突破することができます。(これを見付けるのに、1週間掛かりました…)
設定方法は簡単です。
以下のコマンドを入力して、「.wslconfig」ファイルを作成します。(<ユーザ名>は自分のユーザ名に置き換えてください)
echo [wsl2] > c:\Users\<ユーザ名>\.wslconfig |
echo networkingMode=mirrored >> c:\Users\<ユーザ名>\.wslconfig
以下のコマンドを入力して、ファイルの中身を確認します。
type c:\Users\<ユーザ名>\.wslconfig

上記の内容が表示されれば成功です。
Dockerのインストール
コマンドプロンプトに以下のコマンドを入力して、Ubuntuを起動します。
wsl
Docker公式サイトのインストール方法(https://docs.docker.com/engine/install/ubuntu/)に則って、Docker Engineをインストールしましょう。
以下のコマンドを1つずつ入力して、DockerのGPG鍵をダウンロードします。
途中、パスワードが求められたら、ユーザ作成で設定したパスワードを入力してください。
”[Y/n]”は、 "y"を入力します。
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] 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 Engineをインストールします。
”[Y/n]”は、 "y"を入力してください。
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
最後に、以下のコマンドを入力して、Docker Engineが正常に動作するか確認します。
sudo docker run hello-world

上記の内容が表示されたら成功です。
Docker Engineのインストールが無事完了となります!
おめでとうございます!
まとめ
今回は、WindowsでDocker Engineを使用する方法をご紹介しました。私が大変苦労したネットワーク設定についても熱く語らせていただきました。本記事がお役に立ちましたら幸いです。
また現状、Dockerコマンドを実行するには、「sudo」を付けなければなりません。実行権限がrootにしかないためです。作成したユーザにDockerコマンドの実行権限を付与する方法もございますので、別の記事でご紹介したいと思います。
最後まで閲覧いただきありがとうございます!