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)

                         


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM