web-dev-qa-db-ja.com

docker-compose v2でデフォルトのブリッジネットワークに参加する方法は?

nginx-proxy コンテナをセットアップして、特別なポートではなくポート80のサブドメインを介して他のコンテナにアクセスしようとしました。ご想像のとおり、動作させることができませんでした。

私はdocker自体に慣れていないので、docker-compose.ymlファイルを書く方が快適なため、長いdocker run ...コマンドを常に書く必要はありません。 dockerでもdocker-composeでも、コンテナの起動方法に違いはないと思いました。ただし、気づいた違いの1つは、コンテナをdockerで開始しても新しいネットワークは作成されないが、docker-composexxx_defaultネットワークが作成されることです。

私は、異なるネットワーク上のコンテナが相互にアクセスできないことを読んだので、ngginx-proxyがリクエストを他のコンテナに転送していないのかもしれません。しかし、docker-compose.ymlファイルを設定して新しいネットワークを作成せず、代わりにdocker runのようにデフォルトのブリッジネットワークに参加する方法を見つけることができませんでした。

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

networks:
  default:
    external:
      name: bridge

network_mode: bridgeも試しましたが、違いは見られませんでした。

新しいネットワークを作成しないためにdocker-compose.ymlファイルを書かなければならないのですか、それともまったく不可能ですか?

おまけの質問:dockerdocker-composeの間に他に知っておくべき違いはありますか?

27
noone

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

このブリッジ(またはホスト)でサービスが構成されていない場合、ネットワークが作成されます。

以下でテストおよび確認済み:

version: "2.1"

services:
  app:
    image: ubuntu:latest
    network_mode: bridge
61
Rawkode