docker-compose up使用自定义的网段(像修改docker0一样只需修改一次)

时间:2019-03-14
本文章向大家介绍docker-compose up使用自定义的网段(像修改docker0一样只需修改一次),主要包括docker-compose up使用自定义的网段(像修改docker0一样只需修改一次)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
问题描述:
        还是那个研究安全大业的同时,在部署他的秘密武器,是用docker-compose部署的,有差不多20多个docker-compose.yml文件,然后由于docker-compose.yml中创建自定义网络的时候,默认为172.*.*.*;导致了和我们自己的跳板机网段冲突,只有部署完他的秘密武器,通过跳板机就通过内网登不上去了;那么有没有一种方法可以使得docker-compose up创建新的网桥的时候不是使用默认的172网段的,而是使用我们自定义的网段呢;在上一篇博文中修改/etc/docker/daemon.json的方法只是修改docker0,而我docker-compose每次创建新的网桥的时候,还是使用默认的172.*.*.*;如下:

当docker-compose.yml的配置文件为:
 
1
version: '2.3'
2
3
networks:
4
  cow-cow5:
5
services:
6
  ......
7
  cow:
8
    networks:
9
     - cow-cow5

当配置文件为上面的时候,docker-compose up的时候,会自动创建名为filename-cow-cow5的网桥,并且这个filename-cow-cow5网桥的子网和网段默认为172.17.*.*


当我想要docker-compose使用我指定的子网和网关的话,有什么方法呢?

方法一:

在docker-compose.yml配置文件中明确的指定subnet和gateway
18
 
1
version: '2.3'
2
3
networks:
4
  cow-cow5:
5
    driver: bridge
6
    ipam:
7
      driver: default
8
      config:
9
      - subnet: 10.88.12.0/24
10
        gateway: 10.88.12.1
11
services:
12
13
  cowrie:
14
    ......
15
    
16
    networks:
17
     - cow-cow
18

使用上面这个配置之后,当docker-compose up的时候,会创建名为filename-cow-cow5的网桥,并且这个filename-cow-cow5网桥的子网和网段是我们设置的这个 10.88.12.*;那么连接该网络的容器的IP也是10.88.12.*段的;达到了我们的需求


方法二:

但是当使用docker-compose部署大型项目的时候,几十个docker-compose.yml文件,那么就得一个一个改,作为励志成为运维大佬的我们来说不应该一个一个去改,得想办法,有没有一种办法:只需修改一个地方,然后docker-compose up创建新网桥的时候就会使用我们设置的那个网段和子网;像修改docker0的网段一样,修改/etc/docker/daemon.json配置文件,docker0的网段就会变为在daemon.json里设置的这个;有没有类似于只要修改一个配置文件,docker-compose每次创建新的网桥的时候都会按照配置文件里的来

找了很久,也在一些群里问了,但是基本上都是瞎扯的群,赶紧退群的好;还是自己动手,丰衣足食;终于在以下两篇博客中找到了办法:
找到了就得测试行不行,实践是检验真理的唯一标准,蒽~~~(动手吧)

版本:必须得是
           docker-ce-cli-18.09.1-3.el7.x86_64
           docker-ce-18.09.1-3.el7.x86_64

然后在/etc/docker/daemon.json中添加:
 
1
{
2
  "debug" : true,
3
  "default-address-pools" : [
4
    {
5
      "base" : "12.11.0.0/16",
6
      "size" : 24
7
    }
8
  ]
9
}

重启docker
 
1
systemctl restart docker

这样得到的结果是:
docker0的网段变成了在/etc/docker/daemon.json设置的这个,docker-compose up时每次创建网络的时候也会使用在/etc/docker/daemon.json指定的这个网段