Docker Compose にネットワーク モードを追加する

Marion Paul Kenneth Mendoza 2023年6月20日
  1. Docker でネットワーク情報を収集する
  2. Docker Compose でネットワーク モードを構成する
  3. Docker Swarm でネットワーク モードを構成する
Docker Compose にネットワーク モードを追加する

デフォルトでは、単一のネットワークが Docker Compose によってアプリケーションに作成され、そこに各コンテナーがサービスとして追加されます。 ネットワーク上のすべてのコンテナは、単一のネットワーク上のコンテナからアクセスして見つけることができます。

Docker Compose でネットワーク モードを定義することにより、ネットワークを構成できます。 この記事では、Docker Compose でネットワーク モードを使用してネットワークを定義および設定する方法について説明します。

Docker でネットワーク情報を収集する

特定のコンテナーまたはサービスを通過するネットワーク モードを構成する場合は、最初に追加情報を収集する必要があります。 コマンド docker network ls を実行すると、現在の Docker ネットワークを一覧表示できます。

次の出力のようになります。

出力:

NETWORK ID          NAME                         DRIVER
17cc61428fef        bridge                       bridge
098522f7fce0        sample_default               bridge
1ce3c472afc6        test_default                 bridge
8fd07e456e6c        host                         host
3b5787919641        none                         null

このコマンドは、上記の前のコマンドを使用してコンテナー、サービス、またはネットワークの名前または ID を認識している必要がある場合に便利です。

Docker Compose でネットワーク モードを構成する

Docker Compose バージョン 3 では、network_mode: パラメーターとその値を指定することで、YAML ファイルでネットワーク モードを使用できます。 したがって、version: パラメータと値 3 または 3.0 を使用して、使用している Docker Compose のバージョンを指定してください。

例:

version: "3"
services:
  app:
    network_mode: "host"

上記の例では、ネットワーク モードとして host の例を使用しましたが、代わりにコンテナーまたはサービスを指定できます。 Docker の公式ドキュメントから、サービスのネットワーク モードを定義するときに使用できる複数の値を次に示します。

例:

network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"

以前に情報を収集したので、ネットワーク モードを定義するときにネットワーク名または ID を使用できます。

例:

network_mode: "container:sample_default"
network_mode: "container:1ce3c472afc6"

Docker Swarm でネットワーク モードを構成する

Docker アプリケーションを実行する物理マシンまたは仮想マシンの集合は、Docker Swarm と呼ばれます。 Docker Swarm と呼ばれるコンテナ オーケストレーション ソリューションを使用すると、ユーザーはさまざまなホスト マシンにまたがる多数のコンテナを制御できます。

マシンのグループが一緒にクラスター化されると、使い慣れた Docker コマンドを引き続き実行できますが、クラスター内のデバイスがそれらを実行するようになります。

残念ながら、Docker Compose と Swarm はうまく組み合わせられません。 したがって、network_mode パラメータを使用する代わりに、次のように、networks パラメータを使用して手動でネットワークを定義する必要があります。

例:

version: "3.0"
services:
    app:
        networks:
            - host

networks:
    host:
        name: [Your Network Mode Value]
        external: true
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

関連記事 - Docker Compose