docker-compose 経由で docker コンテナに静的 IP を提供する 質問する

docker-compose 経由で docker コンテナに静的 IP を提供する 質問する

コンテナに静的 IP アドレスを提供しようとしています。カスタム ネットワークを作成する必要があることは理解しています。カスタム ネットワークを作成すると、ブリッジ インターフェイスがホスト マシン (Ubuntu 16.x) 上で起動します。コンテナはこのサブネットから IP を取得しますが、私が提供した静的 IP は取得しません。

これが私の docker-compose.yml です:

version: '2'

services:
  mysql:
    container_name: mysql
    image: mysql:latest
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=root
    ports:
     - "3306:3306"
    networks:
     - vpcbr

  apigw-tomcat:
    container_name: apigw-tomcat
    build: tomcat/.
    ports:
     - "8080:8080"
     - "8009:8009"
    networks:
     - vpcbr
    depends_on:
     - mysql

networks:
  vpcbr:
    driver: bridge
    ipam:
     config:
       - subnet: 10.5.0.0/16
         gateway: 10.5.0.1
         aux_addresses:
          mysql: 10.5.0.5
          apigw-tomcat: 10.5.0.6

コンテナーは、5 と 6 ではなく、10.5.0.2 と 10.5.0.3 を取得します。

ベストアンサー1

コンテナ ネットワークの外部から内部へのルーティングを許可するようなこと (例: macvlan) を実行しない限り、Docker のコンテナに固定 IP を設定することはお勧めしません。DNS は、コンテナ ネットワーク内部のサービス検出用にすでに存在し、コンテナのスケーリングをサポートしています。また、コンテナ ネットワーク外部では、ホスト上の公開ポートを使用する必要があります。この免責事項を踏まえて、必要な Compose ファイルは次のとおりです。

version: '2'

services:
  mysql:
    container_name: mysql
    image: mysql:latest
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=root
    ports:
     - "3306:3306"
    networks:
      vpcbr:
        ipv4_address: 10.5.0.5

  apigw-tomcat:
    container_name: apigw-tomcat
    build: tomcat/.
    ports:
     - "8080:8080"
     - "8009:8009"
    networks:
      vpcbr:
        ipv4_address: 10.5.0.6
    depends_on:
     - mysql

networks:
  vpcbr:
    driver: bridge
    ipam:
     config:
       - subnet: 10.5.0.0/16
         gateway: 10.5.0.1

おすすめ記事