はじめに
Windowsで動くLinux環境を作るために、WSL2でUbuntu環境を構築しました。
しかし、Dockerのインストールに躓いたのでメモ。
Dockerを利用するための初期設定
Ubuntu on WSL2でのDocker Engineの最短インストール手順
こちらの記事を参考に、セットアップを行います。
Docker Engineのインストール
Dockerを使うために必要なものなのでインストールします。
インストールまでに、Docker Desktop for Windowsの利用を推奨されるメッセージが出ますが、放置するとそのままインストールが完了します。
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
rootユーザ以外がDockerコマンドを使えるようにするための設定
rootユーザ以外で使う場面もあると思いますので、このコマンドを設定しておくと良いと思います。
sudo usermod -aG docker $USER
WSL2の再起動
設定した内容を反映させるために、一回PowerShellやCommand Promptでシャットダウンを行い、もう一度立ち上げます。
wsl --shutdown
Dockerのサービスを起動する
サービスを起動しないとDockerが利用できないので、このコマンドを打ちます。
* Starting Docker: docker [OK]
が返ってこれば起動成功です。
sudo service docker start
Dockerの動作チェック
簡単なコマンドを用いて、Dockerが正しく動いているかチェックします。
docker run hello-world
以下のメッセージが出ればDockerコマンドが正しく動作しています。
Hello from Docker!
This message shows that your installation appears to be working correctly.
しかし、以下のメッセージが出る場合は、Dockerが動かせていません。
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Dockerが動作していない方向け
【WSL2】DockerでCannot connect to the Docker daemon…と表示される問題の対処
こちらの記事を参考に、エラー対応します。
Dockerのログを確認
内部でどのようなエラーが発生しているか調べるために、以下のコマンドを打ちます。
sudo cat /var/log/docker.log
僕の場合は、以下のメッセージが出ました。
原因としては、Dockerが新しいiptablesに対応出来ていないためです。
failed to start daemon: Error initializing network controller: error obtaining controller instance: unable to add return rule in DOCKER-ISOLATION-STAGE-1 chain: (iptables failed: iptables --wait -A DOCKER-ISOLATION-STAGE-1 -j RETURN: iptables v1.8.7 (nf_tables): RULE_APPEND failed (No such file or directory): rule in chain DOCKER-ISOLATION-STAGE-1
(exit status 4))
Legacy版のiptablesに変更する
新しいものに対応していないため、Legay版に変更します。
以下のコマンドを打つことで出来ます。
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
WSL2の再起動
設定した内容を反映させるために、一回PowerShellやCommand Promptでシャットダウンを行い、もう一度立ち上げます。
wsl --shutdown
Dockerのサービスを起動、動作チェック
先ほどと同様に、サービスを起動してDockerが動作するかチェックします。
sudo service docker start
docker run hello-world
以下のメッセージが出ればDockerコマンドが正しく動作しています。
Hello from Docker!
This message shows that your installation appears to be working correctly.
おわりに
WindowsでLinuxが動かせるのは便利ですが、Dockerなどのセットアップが大変だと感じました。
様々な記事の寄せ集めで作成した記事ですが、参考にしていただければ幸いです。