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機能のリリースを待ってください。これは、今後数週間ですべての人に提供されます。
現時点では、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が有効になります。
WSLでLinux dockerdデーモンを実行しようとすると、動作する可能性は低く、Docker for Linuxを実行するにはLinuxカーネルが必要です。一方、WSLは、Linuxプログラムを実行できるようにするLinuxシステムコールを実装するWindowsカーネルです。
代わりに、 Windows用ドッカー をインストールする必要があります。これは、組み込みLinux VM(バージョンに応じてHyper-VまたはVirtualBox)を使用するLinuxコンテナーをサポートします。 Windowsバージョンのdockerには、cmdやbashを含むさまざまなコマンドラインからアクセスできるdockerクライアントがあります。
"Docker for windows"
。"Docker for windows" > settings > general
有効化expose on tcp//*** without TLS
。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
export DOCKER_Host='tcp://localhost:2375'
on sybsystem。