2016-09-14 12 views
22

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

は私のドッキングウィンドウ-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 

コンテナは10.5.0.2と10.5.0.3を取得し、代わりに、5と6

答えて

40

注意の私は、固定をお勧めしていないことDockerのコンテナのIPはコンテナネットワークの外部から内部へのルーティングを可能にするものでなければ(例えばmacvlan)。 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 
+1

魅力として動作します!ありがとう。 – chenchuk

+1

私にとってはうまくいかない: ユーザが設定したサブネットを持つネットワークに接続する場合にのみ、ユーザ指定のIPアドレスがサポートされます –

+0

ユーザ設定サブネットが定義された作成ファイルの下半分が欠落している必要があります。 – BMitch

関連する問題