web-dev-qa-db-ja.com

Docker for Windowsの実行、ポートの公開時のエラー

Windows上でDockerを実行することについて多くの質問があることは承知していますが、この質問はWindows上で真新しいDocker for Windowsを実行することに関するものです。
私の場合、Windows 10 Pro 64ビットを使用しています。サイトによると、このバージョンはサポートされるべきです。
ここで見つけたチュートリアルに従っています: https://prakhar.me/docker-curriculum/
もちろん公式ガイドにも従いました: https://docs.docker.com/docker-for-windows/

両方のチュートリアルで、-Pパラメーターを使用してポートを割り当てようとしたとき、またはポート-p 8080:5000を指定しようとしたときに、同じエラーメッセージが表示されます。

公式ガイドでは、docker run -d -p 80:80 --name webserver nginxを実行して以下を取得します。

C:\ Program Files\Docker\Docker\Resources\bin\docker.exe:デーモンからのエラー応答:ドライバーはエンドポイントWebサーバーでの外部接続のプログラミングに失敗しました(f9946544e4c6ad2dd9cb8cbccd251e4d48254e86562bd8e6da75c3bd42c7e45a):ユーザーランドプロキシの開始エラー:mkdir /port/tcp:0.0 80:tcp:172.17.0.2:80:入出力エラー。

非公式ガイドに従ってdocker run -p 8888:5000 prakhar1989/catnipを実行すると、基本的に同じエラーが発生します。

C:\ Program Files\Docker\Docker\Resources\bin\docker.exe:デーモンからのエラー応答:ドライバーは、エンドポイントfocused_swartz(48a0c005779c6e89bf525ead2ecff44a7f092495cd22ef7d19973002963cb232の外部接続のプログラミングに失敗しました:mkdir /port/tcp:0.0.0.0: 8888:tcp:172.17.0.2:5000:入出力エラー。

ポートを割り当てようとしない場合、コンテナは実行されますが、アクセス方法がわかりません。

私が実行しているドッカーのバージョン:

  • Dockerバージョン1.12.3、ビルド6b644ec`
  • docker-composeバージョン1.8.1、ビルド004ddae`
  • docker-machine.exeバージョン0.8.2、ビルドe18a919`

どんな助けも大歓迎です。ありがとうございました。

56
Søren Ullidtz

これは、ポート番号の競合が原因です。githubissue here https://github.com/docker/compose/issues/3277

基本的に、ポートは使用中です!リセットが機能した理由は、他のマッピングを消去したためです。

12
Mrk Fldig

ここに新しい工夫があります。

最後のWindows 10アップデート(Fall Creators Update、2017)には新しい「機能」があります。最後にシャットダウンしたときに実行されていたアプリケーションが自動的に起動します。

これにより、Docker for Windowsが悪い状態に再構成されます。それは、それらのポートが他の何かによって使用されているように見えました-それはそれ自身の幽霊でした。これは、コンテナを停止/起動し、さらに再起動しても、これらのポートがまだ使用されている理由を説明しました!

この場合の解決策は、単にDockerデーモンを再起動することです。

次回のシャットダウン後にこれを防ぐには、シャットダウンボタンを使用しないでください。代わりにこれを入力してください:

shutdown /s /t 0

これにより、新しい機能がバイパスされます。

このスレッドのJason [MS]からの回答を参照してください。

https://answers.Microsoft.com/en-us/insider/forum/insider_wintp-insider_perf-insiderplat_pc/programs-autostart-after-boot-in-windows-10-fall/09dd8d3e-7b36-45d1- 9181-6587dd5d53ab

ある人の回避策は次のとおりです(このスレッドの最後から-自分で試したことはありません):

http://www.icttoolbox.nl/info/stop-windows-10-creator-fall-reopening-programs-reboot/

65
biscuit314

Dockerデーモンを再起動するとこの問題は一時的に修正されますが、最終的にはそれを取り除くためにWindows 10高速起動を無効にするが必要でした。これは@ biscuit314の機能です。

Windows 10の高速起動を無効にするには、コントロールパネル>電源オプション>を選択します電源ボタンは>現在利用できない設定を変更します>チェックを外します高速起動をオンにする(推奨)とヒット変更を保存

Disable fast startup

45
Phonolog

1)実行中のすべてのコンテナdocker stop $(docker ps -a -q)を停止してから

2)マシンでDockerを停止して再起動します。

次に、必要なコマンドを実行します。これで問題が解決します。

8
Soumya Boral

Windows OSの場合、Dockerを再起動してください。これで問題が修正されました。

4
Anoop George

Linux-Debianユーザーの場合、

docker stop $(docker ps -a -q)を使用するのは、すべてのコンテナを停止するかどうかがわかっている場合だけです。..はいの場合は、docker rm $( docker ps -a -q)コンテナを削除するには....

次に、Dockerデーモンを停止します-systemctl stop docker次に、Dockerデーモンを起動します-systemctl start docker

また、Dockerデーモンが起動しているかどうかを確認します-service docker status

上記のすべての手順を実行すると、元気になります。...

2
Abhishek Jain

管理者モードでdockerを停止し、再度開始してみてください。起動後、管理者モードでもPower Shellを開きます。エラーには「mkdir」と表示されるため、問題が解決する可能性があります。よくわかりませんが、うまくいきました。 -Pを使用する場合、-Pがポートをランダムに選択すると、ポートの競合がエラーの原因とは見なされません。エラー自体は私にはあまり馴染みがありませんでしたが、mkdir Wordを見たので、それが許可エラーである可能性があると想像しました。

この問題に関するすべての提案を試みました。すべてのコンテナを強制終了し、Docker Desktopを再起動し、「高速起動」を無効にして、コンピューターを再起動し、「実験機能」を無効にします。そのようなものはどれもうまくいきませんでした。

最終的には実行しました。試してみたいことがあります(実際に何が修正されたのかわからないため)。

  1. 「Docker Desktop」を見つけ、右クリックして「管理者として実行...」を選択します。
  2. 文句を言っているポートに注意してください。一部の人々は、これは単にDockerの「そのポートは使用中です」と言った非友好的な方法かもしれないと言います。私の場合、ポートは80でした。WindowsProのサービスに入り、安全のために「World Wide Web発行サービス」を無効にしました。
0
Andrew Kvochick