1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WSL2上のUbuntu環境でDockerを利用するために必要な初期設定

Posted at

はじめに

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などのセットアップが大変だと感じました。
様々な記事の寄せ集めで作成した記事ですが、参考にしていただければ幸いです。

参考文献

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?