Create networks automatically in Docker Compose

前端 未结 4 532
逝去的感伤
逝去的感伤 2020-12-29 07:26

When using custom networks in Docker like

networks:
  default:
    external:
      name: service-tier

And try to run that, I´m getting the

相关标签:
4条回答
  • 2020-12-29 08:07

    external is to use an existing network. If you want compose to make networks you simply do:

    networks:
      network1:
      network2:
    

    .. to instruct compose to make the networks. They will be named <compose-dir>-<network name> Verify the creation by using docker network ls.

    You can also override the default network or specify more properties.

    networks:
      default:
        driver: bridge
        driver_opts:
          com.docker.network.driver.mtu: 1450
    

    .. will override the default network setting MTU to 1450 (handy when the host have lower than 1500 mtu and path mtu discovery doesn't work properly). There are other bridge driver options.

    external makes more sense when you want services in two compose setups to talk to each other or you have a manually created network.

    0 讨论(0)
  • 2020-12-29 08:10

    Run the following command: docker network create ddev_default

    0 讨论(0)
  • 2020-12-29 08:14

    As @Grimmy correctly states, docker creates all mentioned networks, so these can be later referenced by running another compose file.

    But, the defaultly generated network name is hardly practlical or robust. As it could turn out to be very long or the docker team changes their opinion on naming strategy.

    But since compose file version 3.5 (means docker-compose version 1.18.0) one can name the network as pleases, so the overal solution is even more robust.

    Please see the following snippets demonstrating on how to achieve this:

    Compose file 1

    version: '3.5'
    services:
      svc-name:
    
        ...                          
    
        networks:
          - specific-network-name
        container_name: "exact-container-reference"
    
        ...
    
    networks:
      specific-network-name:
        external: false
        name: specific-network-name
    

    Compose file 2

    version: '2'
    services:
    
      svc-using-svc-name:
    
        ...
    
        networks:
          - default
          - specific-network-name
        external_links:
          - exact-container-reference
    
        ...
    
    networks:
      specific-network-name:
        external: true
    
    0 讨论(0)
  • 2020-12-29 08:16

    I also had this error:

    Network "NETWORK_NAME" needs to be recreated - option "driver" has changed
    
       docker network ls
       docker network rm NETWORK_NAME
       docker-compose up
    

    After removing the problem network and recreating it, things were fine.

    0 讨论(0)
提交回复
热议问题