问题描述

        还是那个研究安全大业的同事,在部署他的秘密武器,是用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/
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.-.el7.x86_64
docker-ce-18.09.-.el7.x86_64

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

{
"debug" : true,
"default-address-pools" : [
{
"base" : "12.11.0.0/16",
"size" :
}
]
}
3、重启docker
systemctl restart docker

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

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

docker-compose up使用自定义的网段的两种方式(从其根源指定)的更多相关文章

  1. 在CentOS下的docker容器中部署spring boot应用的两种方式

    我们通常在 windows 环境下开发 Java,而通常是部署在Linux的服务器中,而CentOS通常是大多数企业的首选,基于Docker的虚拟化容器技术,多数Java应用选择这种方式部署服务.本文 ...

  2. EntityFramework Core 2.0自定义标量函数两种方式

    前言 上一节我们讲完原始查询如何防止SQL注入问题同时并提供了几种方式.本节我们继续来讲讲EF Core 2.0中的新特性自定义标量函数. 自定义标量函数两种方式 在EF Core 2.0中我们可以将 ...

  3. iOS 自定义layer的两种方式

    在iOS中,你能看得见摸得着的东西基本都是UIView,比如一个按钮,一个标签,一个文本输入框,这些都是UIView: 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层 在创建UIVi ...

  4. Dojo初探之2:设置dojoConfig详解,dojoConfig参数详解+Dojo中预置自定义AMD模块的四种方式(基于dojo1.11.2)

    Dojo中想要加载自定义的AMD模块,需要先设置好这个模块对应的路径,模块的路径就是这个模块的唯一标识符. 一.dojoConfig参数设置详解 var dojoConfig = { baseUrl: ...

  5. Docker镜像构建的两种方式

    关于Docker里面的几个主要概念 这里用个不太恰当的比方来说明. 大家肯定安装过ghost系统,镜像就像是ghost文件,容器就像是ghost系统.你可以拿别人的ghost文件安装系统(使用镜像运行 ...

  6. k8s 创建资源的两种方式 - 每天5分钟玩转 Docker 容器技术(124)

    命令 vs 配置文件 Kubernetes 支持两种方式创建资源: 1. 用 kubectl 命令直接创建,比如: kubectl run nginx-deployment --image=nginx ...

  7. Docker镜像构建的两种方式(六)--技术流ken

    镜像构建介绍 在什么情况下我们需要自己构建镜像那? (1)当我们找不到现有的镜像,比如自己开发的应用程序 (2)需要在镜像中加入特定的功能 docker构建镜像有两种方式:docker commit命 ...

  8. 制作Docker镜像的两种方式

    此文已由作者朱笑天授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 一.使用docker commit命令制作docker镜像 1. pull一个centos6.6的基础镜像, ...

  9. egg.js 通过 form 和 ajax 两种方式上传文件并自定义目录和文件名

    egg.js 通过 form 和 ajax 两种方式上传文件并自定义目录和文件名 评论:10 · 阅读:8437· 喜欢:0 一.需求 二.CSRF 校验 三.通过 form 表单上传文件 四.通过 ...

随机推荐

  1. VMware 物理机可以复制文件到虚拟机,却无法从虚拟机复制文件到物理机(已解决)

    物理机运行,输入gpedit.msc确定,把如图的那个改成“已禁用” 之后虚拟机重新安装VMware Tool重启即可 事情是这样的,每次打开IDM会 “警告:您在以管理员身份运行IDM,在该模式下, ...

  2. BluePrism初尝2

    在接近三周的自学中,初步体验到了RPA的甜头. 在对BP这个工具慢慢的深入接触中,从0 到1的探索式学习,从最开始的一个个的小功能模块的用途,每一个的属性的功能,到现在自己能初步尝试组织一些简单的流程 ...

  3. 《JavaScript Dom 编程艺术》读书笔记-第10章

    用JS实现动画~内容包括: 1. 动画基础知识 2. 用动画丰富网页的浏览效果 动画就是让元素的位置随时间而不断变化. 位置: //CSSelement{ position:absolute; top ...

  4. Problem 5: Smallest multiple

    2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any rema ...

  5. MySQL数据库语句

    一 . 常用mysql命令行命令        1 .启动MYSQL服务   net start mysql 停止MYSQL服务   net stop mysql 2 . netstat –na | ...

  6. java web的MVC框架,el表达式,servlet,jstl表达式

    MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码 ...

  7. Unable to correct problems, you have held broken packages

    Use aptitude instead of apt-get. It is more intelligent. It not only will handle downgrading conflic ...

  8. .Net Core+Angular6 学习 第二部分(创建Angular6项目)

    . 创建angular6 前提: 需要安装nodejs以及angular的脚手架,Angular官网要求Angular6.0必须在node 8.x 和 npm 5.x 以上的版本才能正常使用. 我的版 ...

  9. Can DBC 文件翻译,不是很标准,凑合看还可以

    1 引言 DBC文件描述单个CAN网络的通信.这个信息足以监测和分析网络并模拟不是物理可用的节点(剩余的总线模拟). DBC文件也可以用来开发电子控制单元的通信软件,该控制单元应该是CAN网络的一部分 ...

  10. CSS效果:3D卡片

    HTML: <html lang="en"> <head> <meta charset="UTF-8"> <meta ...