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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn