複数の IP アドレスを持つ Docker ノード - それらの切り替え

複数の IP アドレスを持つ Docker ノード - それらの切り替え

私のネットワーク構成は、Docker ホスト上で次のようになります。

➜  server git:(master) ✗ ip addr
3: ens9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:02:c9:bb:3b:f4 brd ff:ff:ff:ff:ff:ff
    inet <IP Address>.18/29 brd <Default Gateway>.23 scope global ens9
       valid_lft forever preferred_lft forever
    inet <IP Address>.19/29 brd <Default Gateway>.23 scope global secondary ens9:0
       valid_lft forever preferred_lft forever

現在、既存の非 Docker サービスがIP アドレス443のポートで実行されており.18、これを維持する必要があります。ただし、 を使用してポートを開くと、ポートがすでにホストによって使用されているDockerfileため、起動に失敗します。443

ポートを開くときに Docker が使用する IP アドレスをグローバルに切り替える方法はありますか? もちろん既に機能している各コンテナの構成ファイルでこれを手動で設定する必要はありません。

答え1

サービス宣言で特定のコンテナにアクセスするためにポートを公開する必要はありません。実際、次のように、異なるサブネットを持つ単一の docker-compose.yml 内でネットワークを宣言できます。

version: '2'

networks:
  custom-network:
    ipam:
      driver: default
      config:
        - subnet: 73.0.0.0/16
          ip_range: 73.0.0.0/24
          gateway: 73.0.0.254

services:
  simple-nginx:
    image: nginx
    networks:
      custom-network:
        ipv4_address: 73.0.0.10

73.0.0.10そして、カスタム ネットワークの静的 IP を使用して nginx サービスにアクセスします。

詳細については、docker-compose のネットワーク ドキュメントをいつでも確認できます。 参考:

または、docker ドキュメントを直接参照してください: https://docs.docker.com/engine/userguide/networking/

関連情報