我正在尝试为容器提供静态 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
容器得到 10.5.0.2 和 10.5.0.3,而不是 5 和 6。
原文由 chenchuk 发布,翻译遵循 CC BY-SA 4.0 许可协议
请注意,我不建议 Docker 中的容器使用固定 IP,除非您正在做一些允许从外部路由到容器网络内部的事情(例如 macvlan)。 DNS 已经用于容器网络内部的服务发现,并支持容器扩展。在容器网络之外,您应该使用主机上的暴露端口。有了该免责声明,这是您想要的撰写文件: