溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

docker-compose如何創(chuàng)建網(wǎng)橋、添加子網(wǎng)、刪除網(wǎng)卡

發(fā)布時(shí)間:2021-03-24 13:41:49 來源:億速云 閱讀:2779 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下docker-compose如何創(chuàng)建網(wǎng)橋、添加子網(wǎng)、刪除網(wǎng)卡,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

1.創(chuàng)建docker網(wǎng)卡

[root@i ~]# brctl addbr docker0
[root@i ~]# ip addr add 192.168.42.1/24 dev docker0  
# 這里的ip是給docker內(nèi)部用的, 隨意配置一個(gè)即可
[root@i ~]# ip link set dev docker0 up
[root@i ~]# ip addr show docker0
# 查看docker
[root@i ~]# systemctl restart docker
[root@i ~]# systemctl restart docker
# 啟動(dòng)docker服務(wù)

2.添加子網(wǎng)

[root@i ~]# docker network create backend
# 這樣我們就創(chuàng)建了backend子網(wǎng),docker-compose就可以直接使用這個(gè)network
# 如果無法常見子網(wǎng),則使用下面的命令,跳過安全問題
 
[root@i ~]# docker network create backend --subnet 172.24.24.0/24
 
[root@i ~]# docker network ls
NETWORK ID     NAME        DRIVER       SCOPE
6afff4d90f05    backend       bridge       local
57de7f32064e    bridge       bridge       local
4b44a5340d6e    host        host        local
ac8e8ffe243f    none        null        local

這里可以看到有backend

3.刪除網(wǎng)卡

[root@i ~]# brctl show
#查看網(wǎng)橋狀態(tài)
bridge name   bridge id        STP enabled   interfaces
br-5db3fa0c465f     8000.02424cfb3937    no       veth038d483
                            veth3950f5c
                            veth769dc5e
                            veth715203f
                            veth9f31643
                            vethd0f5330
docker0     8000.3a4803cd6298    no       veth9d3badb
                            vethd7530fd
[root@i ~]# brctl delif <網(wǎng)橋名> <端口名>
#卸載網(wǎng)橋上的端口
[root@i ~]# ifconfig
#查看是否有網(wǎng)橋網(wǎng)卡名
[root@i ~]# ifconfig <網(wǎng)橋名> down
#關(guān)閉此網(wǎng)卡
[root@i ~]# brctl delbr <網(wǎng)橋名>
#刪除網(wǎng)橋

補(bǔ)充:Docker-Compose 自動(dòng)創(chuàng)建的網(wǎng)橋與局域網(wǎng)沖突的終極解決方案

一、問題描述

在使用 docker-compose 部署應(yīng)用時(shí), docker 默認(rèn)的網(wǎng)絡(luò)模式是 bridge ,默認(rèn)網(wǎng)段是 172.17.0.1/16。十分不巧的是我們自己物理機(jī)的局域網(wǎng)也使用的是 172.18.0.1/16 的網(wǎng)段。

在執(zhí)行 docker-compose -f docker-compose.yml up -d 部署服務(wù)后,自動(dòng)生成的網(wǎng)橋會(huì)依次使用 172.18.x.x,然而悲催的事情發(fā)生了。docker 生成的網(wǎng)橋與局域網(wǎng)沖突了。

于是乎,面向百度編程的漫漫長路開始了… …,但是,通過一次次的百度和谷歌,找到好多好多復(fù)制來復(fù)制去的博客,最終一遍一遍的試錯(cuò),最終也沒有解決我的問題,于是乎,這篇含金量達(dá)到 99.9999999999999999999999999% 的文章出爐了。

docker-compose如何創(chuàng)建網(wǎng)橋、添加子網(wǎng)、刪除網(wǎng)卡

本次實(shí)驗(yàn)環(huán)節(jié)的 Docker 版本

[root@node100 docker-compose]# docker info | grep 'Server Version'
 Server Version: 19.03.12

二、解決方案

停止 docker-compose 創(chuàng)建的容器

docker-compose -f docker-compose.yml down

操作 Docker 容器

# 停止 Docker 容器
sudo systemctl stop docker
# 停止 docker0 網(wǎng)橋
sudo ip link set dev docker0 down
# 刪除 docker0 網(wǎng)橋
sudo brctl delbr docker0
# 重置 iptables
sudo iptables -t nat -F POSTROUTING

P.S

# linux brctl command not found,安裝 brctl 
yum install bridge-utils -y

修改 daemon.json

# 編輯 daemon.json 文件
vim /etc/docker/daemon.json
# 添加如下內(nèi)容,包含設(shè)置 Docker 容器的 IP 網(wǎng)段
"default-address-pools" : [
  {
   "base" : "192.168.0.0/16",
   "size" : 24
  }
]

P.S

注意:如果 daemon.json 中包含了其它的內(nèi)容,請(qǐng)切記語法格式的正確性,比如用逗號(hào)隔開。

重啟 Docker 容器

sudo systemctl daemon-reload
sudo systemctl start docker

重新安裝和啟動(dòng) docker-compose 的命令

docker-compose -f docker-compose.yml up -d

三、拓展方案

點(diǎn)擊此處獲取 ISSUES 大佬們給出的一些解決方案

方案一

docker-compose如何創(chuàng)建網(wǎng)橋、添加子網(wǎng)、刪除網(wǎng)卡

方案二

docker-compose如何創(chuàng)建網(wǎng)橋、添加子網(wǎng)、刪除網(wǎng)卡

方案三

docker-compose如何創(chuàng)建網(wǎng)橋、添加子網(wǎng)、刪除網(wǎng)卡

以上是“docker-compose如何創(chuàng)建網(wǎng)橋、添加子網(wǎng)、刪除網(wǎng)卡”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI