欢迎来到李先生的博客

深山的鹿,不知归处;万般皆苦,只可自渡。
扩大
缩小

docker-compose up使用自定义的网段的两种方式(从其根源指定)

问题描述

        还是那个研究安全大业的同事,在部署他的秘密武器,是用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的配置文件为:
复制代码
version: '2.3'

networks:
  cow-cow5:
services:
  ......
  cow:
    networks:
     - cow-cow5
复制代码

 

当配置文件为上面的时候,docker-compose up的时候,会自动创建名为filename-cow-cow5的网桥,并且这个filename-cow-cow5网桥的子网和网段默认为172.17.*.*
 
 
 
 
当我想要docker-compose使用我指定的子网和网关的话,有什么方法呢?
 
 

方法一

 
在docker-compose.yml配置文件中明确的指定subnet和gateway
 
复制代码
version: '2.3'

networks:
  cow-cow5:
    driver: bridge
    ipam:
      driver: default
      config:
      - subnet: 10.88.12.0/24
        gateway: 10.88.12.1
services:

  cowrie:
    ......
    
    networks:
     - cow-cow
复制代码

 

 
使用上面这个配置之后,当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每次创建新的网桥的时候都会按照配置文件里的来
 
找了很久,也在一些群里问了,但是基本上都是瞎扯的群,赶紧退群的好;还是自己动手,丰衣足食;终于在以下两篇博客中找到了办法:
 
找到了就得测试行不行,实践是检验真理的唯一标准,蒽~~~(动手吧)
 

1)版本必须是18.09.1

docker-ce-cli-18.09.1-3.el7.x86_64
docker-ce-18.09.1-3.el7.x86_64

  

2)在/etc/docker/daemon.json中添加

复制代码
{
  "debug" : true,
  "default-address-pools" : [
    {
      "base" : "12.11.0.0/16",
      "size" : 24
    }
  ]
}
复制代码

  

3、重启docker
systemctl restart docker

 

4、经测试结果生效,得出以下结论

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

安装脚本:

https://github.com/Lemon-le/Shell-Script/blob/master/install_docker_v18-09-1.sh  (docker)      

https://github.com/Lemon-le/Shell-Script/blob/master/install_docker_compose.sh    (docker-compose)

                         

官网安装手册:

https://docs.docker.com/install/linux/docker-ce/centos/   (docker)

https://docs.docker.com/compose/install/    (docker-compose)

                         

posted on   Captain_Li  阅读(21374)  评论(1编辑  收藏  举报

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示