1. ホーム
  2. docker

[解決済み] docker-composeでDockerコンテナに固定IPを提供する

2022-07-18 06:32:37

質問

私は、コンテナに固定 IP アドレスを提供しようとしています。私はカスタムネットワークを作成する必要があることを理解しています。私はそれを作成し、ブリッジインターフェイスはホストマシン(Ubuntu 16.x)上で稼働しています。コンテナは、このサブネットから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 を取得します。

どのように解決するのですか?

外部からコンテナネットワーク内部へのルーティングを許可するようなこと(例:macvlan)をしない限り、Dockerでコンテナ用の固定IPを推奨しないことに留意してください。DNSはコンテナネットワークの内部でサービスを発見するためにすでに存在し、コンテナのスケーリングをサポートしています。そして、コンテナネットワークの外側では、ホスト上の露出したポートを使うべきです。この免責事項で、欲しいコンポジットファイルはこちらです。

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