作業概要
WSL環境構築中にDockerが起動しない問題が発生しました。
普段はVagrantで環境構築を行っていますが、今回は学習も兼ねてWSLを使用してみました。
エラー発生まで完了している作業
WSL(Ubuntu22.04)インストール
Docker、docker-composeもインストール
エラー内容
docker-compose build
, docker ps
などのDockerコマンドを実行したら以下のエラーが発生。
$ docker-compose build
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running
いつものようにDockerが起動していないだけだろう..と思いsudo service docker start
コマンドを実行したものの解決せず・・・。
調査
色々記事を漁っていると以下の記事を発見
どうやらネットワーク関連の問題ぽかったです。
原因
Ubuntu(22.04)はiptables-nftとかいうパケットフィルタリング?のようなものをデフォルトで使用しているみたいでこいつが悪さしていたみたいです。
解決策
問題のiptables-nftを手動で別のものに切り替えることで解決するみたいなので早速実行してみましょう。
sudo update-alternatives --config iptables
コマンドを実行してください。
すると、表示が対話モードになります。
そこからiptables-legacyというものに切り替えたいので、それに該当する1を入力してください。
$ sudo update-alternatives --config iptables
There are 2 choices for the alternative iptables (providing /usr/sbin/iptables).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/sbin/iptables-nft 20 auto mode
1 /usr/sbin/iptables-legacy 10 manual mode
2 /usr/sbin/iptables-nft 20 manual mode
Press <enter> to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/sbin/iptables-legacy to provide /usr/sbin/iptables (iptables) in manual mode
入力したらsudo service docker start
を実行するとうまくいくはずです。
参考記事