如何使用Docker compose定义子网和IP地址并将其分配给容器

如何使用Docker compose定义子网和IP地址并将其分配给容器,docker,docker-compose,docker-networking,Docker,Docker Compose,Docker Networking,我想我想做的是直截了当的,但是通过阅读docker compose关于网络的文档部分,我没有发现有用的信息:( 我想创建2个子网(将来可能会更多,但现在,让我们将其设置为2个子网),并能够手动将每个子网的IP地址分配给我在docker compose中指定的容器 如何做到这一点?使用此合成文件,您可以添加任意数量的n/w:- version: '2' services: mysql: container_name: mysql image: mysql:latest

我想我想做的是直截了当的,但是通过阅读docker compose关于网络的文档部分,我没有发现有用的信息:(

我想创建2个子网(将来可能会更多,但现在,让我们将其设置为2个子网),并能够手动将每个子网的IP地址分配给我在docker compose中指定的容器


如何做到这一点?

使用此合成文件,您可以添加任意数量的n/w:-

version: '2'
services:
  mysql:
    container_name: mysql
    image: mysql:latest
    ports:
     - "3306:3306"
    networks:
      mgmnt:
        ipv4_address: "192.168.80.5"
  tomcat:
    container_name: tomcat
    image: tomcat:latest
    ports:
     - "8080:8080"
     - "8009:8009"
    networks:
      mgmnt:
        ipv4_address: "192.168.80.6"
      local:
        ipv4_address: "10.10.0.10"  
    depends_on:
     - mysql

networks:
  mgmnt:
    driver: bridge
    ipam:
     config:
       - subnet: 192.168.0.0/16
         gateway: 192.168.0.1
  local:
    driver: bridge
    ipam:
     config:
       - subnet: 10.10.0.0/16
         gateway: 10.10.0.1

如果我想
tomcat
成为两个子网的一部分,那该怎么办?那会是什么样子?为什么需要这样做?通常不能从Docker空间外部直接访问容器专用IP地址,而在Docker空间内部,Compose托管网络还提供可以解析容器名称的DNS;很少需要管理容器名称这些IP地址是直接的。(即使在一个
docker compose.yml
文件中使用多个网络,似乎也没有多大好处。)