2017-05-03 5 views
8

nginx-proxyコンテナをセットアップして、特別なポートの代わりにポート80のサブドメインを介して他のコンテナにアクセスしようとしました。あなたが推測できるように、私はそれを働かせることができませんでした。デフォルトのブリッジネットワークをdocker-compose v2に参加させるにはどうすればよいですか?

ドッカー自体は新しく、docker-compose.ymlファイルを書くのがより快適だと分かったので、長くdocker run ...コマンドを書く必要はありません。コンテナをどのように起動するかは、dockerまたはdocker-composeのどちらかで違いはないと思いました。しかし、私が気づいた違いは、コンテナをdockerで開始すると新しいネットワークは作成されませんが、docker-composeではその後にxxx_defaultネットワークが存在することになります。

異なるネットワーク上のコンテナ同士が互いにアクセスできないことがあります。これは、おそらくnginx-proxyが他のコンテナに要求を転送していない理由と考えられます。しかし、docker-compose.ymlファイルを新しいネットワークを作成しないように設定する方法を見つけることができませんでしたが、代わりにdocker runのようなデフォルトのブリッジネットワークに参加しました。

は、私は次のことを試してみましたが、それは私はこのようなシステムネットワークに参加できないというエラーが発生しました:

networks: 
    default: 
    external: 
     name: bridge 

私もnetwork_mode: bridgeを試してみましたが、それはすべての違いを確認していないようでした。

docker-compose.ymlファイルを作成して新しいネットワークを作成しないようにするにはどうすればよいですか、それはまったく不可能ですか?

ボーナスに関する質問:dockerdocker-composeの間に他に違いはありますか?

+0

[v1の形式](https://docs.docker.com/compose/compose-file/compose-file-v1/)は、ファイルを構成するには作成されませんデフォルトのブリッジ上の他のコンテナと通信するために 'links'が設定されている必要があります。 – Matt

+0

v1は推奨されないため、その使用は避けてください。 – Rawkode

+0

はい、バージョン2形式を使用していました。ヒントをありがとう。 – noone

答えて

16

docker-compose.ymlの各サービスにnetwork_mode: bridgeを追加すると、ネットワークの作成が中止されます。

このブリッジ(またはホスト)でサービスが設定されていない場合は、ネットワークが作成されます。テストおよび確認を

version: "2.1" 

services: 
    app: 
    image: ubuntu:latest 
    network_mode: bridge 
+0

ああ、それは問題かもしれない、私はそれをただ一つのサービスに加えたと思う。私は後でそれを試し、それが問題を解決するかどうかをチェックする。 – noone

+0

私はここに戻って報告するのを忘れました...それは実際に問題でした。 :) – noone

+0

これは発見を破ります。したがって、お互いに話す必要がある> 1つの容器があれば、動作しません。 –

関連する問題