Dockerでカスタムネットワークを使用する場合
networks:
default:
external:
name: service-tier
そして、それを実行しようとすると、エラーが発生します
エラー:ネットワークサービス層は外部として宣言されましたが、見つかりませんでした。
docker network create service-tier
を使用してネットワークを手動で作成し、再試行してください。
Docker-composeを使用してネットワークを自動的に作成することは可能ですか、それとも最初に手動で作成する以外の方法はありませんか?
external
は既存のネットワークを使用します。作成してネットワークを作成する場合は、次のようにします。
networks:
network1:
network2:
..ネットワークを作成するように構成を指示します。 <compose-dir>-<network name>
という名前が付けられます。docker network ls
を使用して作成を確認します。
デフォルトのネットワークを上書きしたり、プロパティをさらに指定したりすることもできます。
networks:
default:
driver: bridge
driver_opts:
com.docker.network.driver.mtu: 1450
..デフォルトのネットワーク設定MTUを1450に上書きします(ホストの1500 mtu未満で、パスmtuディスカバリーが正しく機能しない場合に便利です)。 他のブリッジドライバオプション があります。
external
は、2つの構成設定のサービスが互いに通信する場合、または手動で作成されたネットワークがある場合に、より意味があります。
@ Grimmy が正しく述べられているように、dockerは言及されたすべてのネットワークを作成するので、別の構成ファイルを実行することでそれらを後で参照できます。
ただし、デフォルトで生成されるネットワーク名は、実用的または堅牢ではありません。非常に長いことが判明するか、docker
チームが命名戦略についての意見を変更する可能性があるためです。
ただし、ファイルバージョンの作成は3.5
(手段 docker-compose
バージョン 1.18.0
)ネットワークに好きな名前を付けることができるため、全体的なソリューションはさらに堅牢です。
これを実現する方法を示す次のスニペットを参照してください。
ファイル1の作成
version: '3.5'
services:
svc-name:
...
networks:
- specific-network-name
container_name: "exact-container-reference"
...
networks:
specific-network-name:
external: false
name: specific-network-name
ファイル2の作成
version: '2'
services:
svc-using-svc-name:
...
networks:
- default
- specific-network-name
external_links:
- exact-container-reference
...
networks:
specific-network-name:
external: true