docker-compose upで「ERROR: for nginx Cannot start service nginx」とか出る場合の対処

Docker ツール

Windows10でdocker-compose upを実行したら以下のようなエラーが出ました。
対処法を書いていきます。

ERROR: for laradock_nginx_1  Cannot start service nginx: driver failed programming external connectivity on endpoint laradock_nginx_1 (47613c8491191e91fdbd37fbfe7613bb9e988d34937ce61f4ad9b8cdddaf8ecd): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

実行環境

実行環境は以下。

>docker -v
Docker version 19.03.5, build 633a0ea

>docker-compose -v
docker-compose version 1.24.1, build 4667896b

ホストマシンはWindows10 Proです。

エラーの内容

実行したコマンドとエラーは以下。

>docker-compose up -d nginx mysql phpmyadmin workspace
Creating laradock_docker-in-docker_1 ... done
Creating laradock_mysql_1            ... done
Creating laradock_workspace_1        ... done
Creating laradock_phpmyadmin_1       ... done
Creating laradock_php-fpm_1          ... done
Creating laradock_nginx_1            ... error                                                                      
ERROR: for laradock_nginx_1  Cannot start service nginx: driver failed programming external connectivity on endpoint laradock_nginx_1 (47613c8491191e91fdbd37fbfe7613bb9e988d34937ce61f4ad9b8cdddaf8ecd): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

ERROR: for nginx  Cannot start service nginx: driver failed programming external connectivity on endpoint laradock_nginx_1 (47613c8491191e91fdbd37fbfe7613bb9e988d34937ce61f4ad9b8cdddaf8ecd): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
ERROR: Encountered errors while bringing up the project.

エラーの意味を翻訳すると以下のような感じ。

  • ドライバーはエンドポイントlaradock_nginx_1で外部接続のプログラミングに失敗しました
  • ユーザーランドプロキシの起動中にエラーが発生しました:listen tcp 0.0.0.0:80:bind:アクセス許可で禁止されている方法でソケットにアクセスしようとしました。

よくわかりませんが80番ポートにアクセスできないような事を言っている。
他に使っているプログラムがないか調べましょう

netstatコマンドとtasklistコマンドを使って80番ポートを使っているアプリケーションを調べます。

>netstat -ano

アクティブな接続

  プロトコル  ローカル アドレス      外部アドレス           状態            PID
  TCP         0.0.0.0:80             0.0.0.0:0              LISTENING       4

>tasklist /fi "PID eq 4"

イメージ名                     PID セッション名     セッション# メモリ使用量
========================= ======== ================ =========== ============
System                           4 Services                   0        688 K

「System」がポート80を使ってしまっているようです。
これを解決する方法を紹介されている記事を見つけたので参考にさせて頂きます。
http://lovee7.blog.fc2.com/blog-entry-35.html

コントロールパネルを開き、プログラム→プログラムと機能の「Windowsの機能の有効化または無効化」を選択します。

「インターネット インフォメーション サービス」→「World Wide Web サービス」のチェックを外します。

OKボタンを押してしばらくすると変更が完了します。
改めてdocker-compose upを試します。

>docker-compose up -d nginx mysql phpmyadmin workspace
laradock_docker-in-docker_1 is up-to-date
laradock_mysql_1 is up-to-date
laradock_workspace_1 is up-to-date
laradock_phpmyadmin_1 is up-to-date
laradock_php-fpm_1 is up-to-date
Starting laradock_nginx_1 ... done

WindowsはDocker使うにも一苦労です。
やっと開発の作業に移れます。

それでは、以上となります。

コメント/ピンバック

タイトルとURLをコピーしました