我正在尝试为容器提供静态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。
请注意,除非您做的事情允许容器网络从外部路由到内部(例如,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