web-dev-qa-db-ja.com

Linux用WindowsサブシステムのUbuntuでDockerを実行する

WSLでDockerを実行しようとして失敗しました。 buntuにDockerをインストール に指定された手順に従ってWSLにDockerをインストールしましたが、docker ps次のエラーが表示されます。

docker ps    
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

ドッカーのログを見て、私はこれを見つけました:

level=warning msg="Running modprobe nf_nat failed with message: `modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.4.0-43-Microsoft/modules.dep.bin'\nmodprobe: WARNING: Module nf_nat not found in directory /lib/modules/4.4.0-43-Microsoft`, error: exit status 1"
time="2017-12-28T12:07:23.227671600+01:00" level=warning msg="Running modprobe xt_conntrack failed with message: `modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.4.0-43-Microsoft/modules.dep.bin'\nmodprobe: WARNING: Module xt_conntrack not found in directory /lib/modules/4.4.0-43-Microsoft`, error: exit status 1"
Error starting daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain: iptables failed: iptables -t nat -N DOCKER: iptables v1.6.0: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
 (exit status 3)

WSLでDockerを実行する方法はありますか?

最後に、簡単な方法でWSLでDockerを実行できます。まずWindowsでDocker Engineをインストールして実行し、次にWindows実行可能ファイルを指すシンボリックリンクをUbuntu bashで作成する必要があります。

Sudo ln -s /mnt/c/Program\ Files/Docker/Docker/resources/bin/docker.exe /usr/bin/docker

このリンクが機能するのは、バージョンWindows 10 Creators UpdateからBashからWindows実行可能ファイルを実行できるためです。 WindowsのバージョンがWindows 10 Creators Updateより前の場合は、 このブログで説明されている解決策 を試すことができます

良いニュースです!実際のLinux Dockerデーモンはビルド17134で良好に動作するため、Windows DockerまたはHyper-Vは不要になります。リリースプレビューリングでビルドをテストしており、WSL内のLinuxコンテナ内でdockerソースを問題なくコンパイルしました。

次のWindows 10機能のリリースを待ってください。これは、今後数週間ですべての人に提供されます。

9
onoma

現時点では、dockerdと実際のdockerランタイムをWSL内で実行することはできません。決してではありませんが、将来的には不可能になるということです。

それでもWSLのdockerクライアントを使用して、Windows²ドッカーデーモンとそのコンテナを制御できます。

WSLでは、export DOCKER_Host='tcp://localhost:2375'。さらに、Windows²Docker設定でTCPアクセスを許可します。これで、docker psおよびWindows²でdockerdを搭載したコンテナを参照してください。

もし、あんたが Cannot connect to the Docker daemon at tcp://localhost:2375. Is the docker daemon running?、これはWindowsのDocker設定でTCPアクセスを有効にしていないことを意味します。

²実際には、WindowsはDockerをまったくサポートしていません。 Hyper-V「Moby」Linuxインスタンスにより、WindowsでDockerが有効になります。

3
Alex

WSLでLinux dockerdデーモンを実行しようとすると、動作する可能性は低く、Docker for Linuxを実行するにはLinuxカーネルが必要です。一方、WSLは、Linuxプログラムを実行できるようにするLinuxシステムコールを実装するWindowsカーネルです。

代わりに、 Windows用ドッカー をインストールする必要があります。これは、組み込みLinux VM(バージョンに応じてHyper-VまたはVirtualBox)を使用するLinuxコンテナーをサポートします。 Windowsバージョンのdockerには、cmdやbashを含むさまざまなコマンドラインからアクセスできるdockerクライアントがあります。

3
BMitch
  1. インストール"Docker for windows"
  2. "Docker for windows" > settings > general有効化expose on tcp//*** without TLS
  3. Sybsystemで次のスニペットを実行して、Docker CLIをインストールします
DOCKERVERSION=18.03.1-ce
curl -fsSLO https://download.docker.com/linux/static/stable/x86_64/docker-${DOCKERVERSION}.tgz \
&& tar xzvf docker-${DOCKERVERSION}.tgz --strip 1 -C /usr/local/bin docker/docker \
&& rm docker-${DOCKERVERSION}.tgz
  1. export DOCKER_Host='tcp://localhost:2375'on sybsystem。
0
JMadushan