36
25

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 5 years have passed since last update.

WSL2でdocker-composeを使えるようにするまで

Posted at

はじめに

WSLでdocker-composeを使いたかったのだが、以下のエラーが。

$ docker-compose up -d
Creating network "service_default" with the default driver
ERROR: Failed to Setup IP tables: Unable to enable NAT rule:  (iptables failed: iptables --wait -t nat -I POSTROUTING -s 172.18.0.0/16 ! -o br-b2b7dd2f10a1 -j MASQUERADE: iptables: Invalid argument. Run `dmesg' for more information.
 (exit status 1))

WSLのネットワーク周りの対応が完全でないことが原因の様子。
WSL 2であれば解決しそうということで以下の作業を実施。

環境

  • Windows10 Home
  • メモリ: 16GB
  • Build Version: 18917以前

作業手順

  1. Windows 10 Insider Preview の登録

  2. Windows 10 Preview Build のインストール

  3. WSL 2のインストール

  4. WSL 1でUbuntuのインストール

  5. WSL 1 -> WSL 2への切り替え

  6. dockerのインストール

  7. docker-composeのインストール

1. Windows 10 Insider Preview の登録

2. Windows10 Preview Build のインストール

Windows Insider Program の設定

  • 設定 > 更新とセキュリティ > Windows Insider Program

  • Windows Insider Program の画面上で、以下の設定を行う

    • どのようなコンテンツの受け取りを希望されるか => Windows のアクティブな開発
    • 新しいビルドを取得する頻度 => ファースト

Windows Update

  • 設定 > 更新とセキュリティ > Windows Update

    • 再起動が必要
  • Build Versionが18917以降になっていればOK

    • 「Windows Insider Program の設定」を行っていないと、Versionが上げられないことに注意
  • 確認方法

    • コマンドプロンプトのコンソール上部から確認
    • コマンドプロンプトからwinverで確認

3. WSL 2のインストール

  • Power Shellを管理者権限で起動、以下のコマンドを実行
    • 実行後、再起動が必要
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
  • 再起動後に再度同じコマンドを実行すると以下のような表示になる
PS C:\WINDOWS\system32> Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform


Path          :
Online        : True
RestartNeeded : False
  • Build 18917以降でないと実行できない
PS C:\WINDOWS\system32> Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
Enable-WindowsOptionalFeature : 機能名 VirtualMachinePlatform は不明です。
発生場所 :1 文字:1
+ Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlat ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Enable-WindowsOptionalFeature], COMException
    + FullyQualifiedErrorId : Microsoft.Dism.Commands.EnableWindowsOptionalFeatureCommand

4. WSL 1でUbuntuのインストール

  • Microsoft Store からアプリをインストール
    • インストール済みであればここはスキップ

5. WSL 1 -> WSL 2への切り替え

  • 現在のVersionを確認
PS C:\WINDOWS\system32> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-16.04    Stopped         1
  • wsl --set-version で切り替え
PS C:\WINDOWS\system32> wsl --set-version Ubuntu-16.04 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
変換が完了しました。

6. dockerのインストール

$ sudo apt-get update
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
$ sudo apt-get install docker-ce
  • 起動
$ service docker status
 * Docker is not running
$ sudo service docker start
 * Starting Docker: docker                                                                                       [ OK ]
$ service docker status
 * Docker is running
  • pullできるか確認
$ docker pull alpine:latest
latest: Pulling from library/alpine
9d48c3bd43c5: Pull complete                                                                                             Digest: sha256:72c42ed48c3a2db31b7dafe17d275b634664a708d901ec9fd57b1529280f01fb
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest
$ docker images
REPOSITORY                                                       TAG                 IMAGE ID            CREATED             SIZE
alpine                                                           latest              961769676411        4 days ago          5.58MB

7. docker-composeのインストール

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/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
$ docker-compose --version
docker-compose version 1.24.1, build 4667896b

注意点

dockerについて

WSL 1の状態でdockerをインストールしていたのだが、WSL 2に切り替えたところpullできなくなった。

$ docker pull alpine:latest
Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 172.24.240.1:53: read udp 172.24.249.251:42777->172.24.240.1:53: i/o timeout

アンインストールして「6. dockerのインストール」の手順でインストールし直したところ、エラーは出なくなった。

参考

36
25
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
36
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?