9

私の現在の仕事では、docker-compose で作成された開発環境があります。1 つのコンテナーは、他のコンテナーへのルーティングを提供する nginx です。Windows と osx の同僚にはすべて問題なく動作しているようです。しかし、私のシステム (osx El Capitan) では、ポート 80 で nginx コンテナーにアクセスする際に問題があります。

docker-compose.yml からコンテナのセットアップがあります

nginx:
    build: ./dockerbuild/nginx
    ports:
        - 80:80
    links:
        - php
    volumes_from:
        - app
... and more

特別なことは何もありません。./dockerbuild/nginxどこからでも知っているように、nginx config だけです。

と ですべてを実行するdocker-compose createdocker-compose start。じゃあdocker psくれよ

3b296c1e4775        docker_nginx           "nginx -g 'daemon off"   About an hour ago   Up 47 minutes       0.0.0.0:80->80/tcp, 443/tcp        docker_nginx_1

しかし、たとえばcurlを介してアクセスしようとすると、エラーが発生します。curl: (7) Failed to connect to localhost port 80: Connection refused

ポート 81 でコンテナーを実行しようとすると、すべて正常に動作します。

ポートは実際にはドッカーにバインドされています

22:47 $ sudo lsof -i -n -P | grep TCP
...
com.docke 14718         schovi   38u  IPv4 0x6e9c93c51ec4b617      0t0    TCP *:80 (LISTEN)
...

osx のファイアウォールはオフになっており、他のセキュリティはありません。

4

3 に答える 3

7

docker-for-mac を使用している場合:

アクセスlocalhost:80は正しいですが、ローカルの apache/nginx サービスが実行されていないことを確認する必要があります。多くの場合、boxen/homebrew の残り物がそのポートをバインドして存在します。

dockertoolbox/virtualbox/whatever ハイパーバイザーを使用している場合

localhost、docker-machine ip ではアクセスできないので、ブラウザに書いdocker-machine ip defaultて使うhttp://$ip:80

それが役に立たない場合

nginx コンテナーが実際に機能することを確認してから、コンテナーに接続します。docker exec -i -t <containerid> bash

次に実行するps aux nginxか、telnetがインストールされている場合はlocalhostに接続してみてください

于 2016-09-18T14:41:48.613 に答える
6

解決しました!

問題は、ずっと前にpow(app_name.localドメインでアプリケーションを実行する非常に単純な自動化されたレールサーバー)をインストールしたことです。pfそして、この獣は、ポート 80 を pow ポートに転送するように更新する LaunchAgent スクリプトを残しました。

于 2016-09-20T07:14:04.210 に答える