通过docker-compose向Docker容器提供静态IP

我正在尝试为容器提供静态IP地址。 我明白,我必须创build一个自定义networking。 我创build它,桥接器在主机上(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 

容器得到10.5.0.2和10.5.0.3,而不是5和6。

请注意,我不build议在Docker中使用容器的固定IP,除非您正在做一些允许从外部到容器networking内部的路由(例如,macvlan)。 DNS已经在那里用于容器networking内部的服务发现,并支持容器缩放。 在容器networking之外,你应该使用主机上的暴露端口。 有了这个免责声明,这里是你想要的撰写​​文件:

 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