コンテナに静的 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