Docker compose每次创建具有不同子网的网络

时间:2019-01-08 20:18:19

标签: docker docker-compose docker-networking docker-network

我有一个简单的yaml文件,它启动两个容器:JBoss和Postgres。当我跑步时:

docker-compose -f compose-application.yaml up -d

新网络已创建-这是我期望的。但是,当我停止使用以下容器时:

docker-compose -f compose-application.yaml down

并再次启动它们,然后网络获得新的子网(增加1)。重复几次重启后,分配给子网的子网就会与已存在的子网冲突(路由问题等)。

我知道我可以指定在Yaml内部使用的子网。但是,我尝试在另一台计算机(适用于Windows 7的Docker)上运行此命令,并且该网络每次都获得相同的子网。

我正在使用docker版本:

docker version
Client:
Version:           18.06.1-ce
API version:       1.38
Go version:        go1.10.3
Git commit:        e68fc7a
Built:             Tue Aug 21 17:23:03 2018
OS/Arch:           linux/amd64
Experimental:      false

Server:
Engine:
  Version:          18.06.1-ce
  API version:      1.38 (minimum version 1.12)
  Go version:       go1.10.3
  Git commit:       e68fc7a
  Built:            Tue Aug 21 17:25:29 2018
  OS/Arch:          linux/amd64
  Experimental:     false

和docker组成:

docker-compose version
docker-compose version 1.23.1, build b02f1306
docker-py version: 3.5.0
CPython version: 3.6.7
OpenSSL version: OpenSSL 1.1.0f  25 May 2017

1 个答案:

答案 0 :(得分:0)

我不知道为什么它在Windows 7中的工作方式不同,但是我可以想象是因为Docker机器本身。

我认为最好的解决方案是在docker-compose yml文件上真正定义一个网络。像这样:

  networks:
    network_name:
      name: NETWORK_NAME
      driver: bridge
      ipam:
        config:
          - subnet: SUBNET