溫州市docker network命令詳解

閱讀 92159  ·  發(fā)布日期 2020-08-24 17:25  ·  溫州優(yōu)光網(wǎng)絡(luò)科技有限公司|建站|APP小程序制作|做網(wǎng)站SEO推廣優(yōu)化
【摘要】 我們先來看看network所有的子命令:(推薦教程:docker教程)docker network create docker network connect docker network ls docker network rm docker network disconnect docker network ins... 【溫州小程序開發(fā),溫州微信公眾號,平陽做網(wǎng)站,平陽網(wǎng)站建設(shè)公司,平陽小程序商城制作,昆陽萬全做網(wǎng)站,鰲江水頭小程序,蕭江騰蛟微信公眾號,山門順溪南雁海西南麂鳳臥麻步懷溪網(wǎng)絡(luò)網(wǎng)店服務(wù),政采云網(wǎng)店管理服務(wù)】...

docker network命令詳解

我們先來看看network所有的子命令:
(推薦教程:
docker教程)docker network create docker network connect docker network ls docker network rm docker network disconnect docker network inspect一、創(chuàng)建網(wǎng)絡(luò)在安裝Docker Engine時會自動創(chuàng)建一個默認(rèn)的bridge網(wǎng)絡(luò)docker0。
此外,還可以創(chuàng)建自己的bridge網(wǎng)絡(luò)或overlay網(wǎng)絡(luò)。
bridge網(wǎng)絡(luò)依附于運(yùn)行Docker Engine的單臺主機(jī)上,而overlay網(wǎng)絡(luò)能夠覆蓋運(yùn)行各自Docker Engine的多主機(jī)環(huán)境中。
創(chuàng)建bridge網(wǎng)絡(luò)比較簡單如下:
# 不指定網(wǎng)絡(luò)驅(qū)動時默認(rèn)創(chuàng)建的bridge網(wǎng)絡(luò) docker network create simple-network # 查看網(wǎng)絡(luò)內(nèi)部信息 docker network inspect simple-network # 應(yīng)用到容器時,可進(jìn)入容器內(nèi)部使用ifconfig查看容器的網(wǎng)絡(luò)詳情但是創(chuàng)建一個overlay網(wǎng)絡(luò)就需要一些前提條件(具體操作請參考Docker容器網(wǎng)絡(luò)相關(guān)內(nèi)容):
- key-value store(Engine支持Consul、Etcd和ZooKeeper等分布式存儲的key-value store) - 集群中所有主機(jī)已經(jīng)連接到key-value store - swarm集群中每個主機(jī)都配置了下面的daemon參數(shù) - –cluster-store - –cluster-store-opt - –cluster-advertise然后創(chuàng)建overlay網(wǎng)絡(luò):
# 創(chuàng)建網(wǎng)絡(luò)時,使用參數(shù)`-d`指定驅(qū)動類型為overlay docker network create -d overlay my-multihost-network就使用--subnet選項創(chuàng)建子網(wǎng)而言,bridge網(wǎng)絡(luò)只能指定一個子網(wǎng),而overlay網(wǎng)絡(luò)支持多個子網(wǎng)。
在bridge和overlay網(wǎng)絡(luò)驅(qū)動下創(chuàng)建的網(wǎng)絡(luò)可以指定不同的參數(shù)。
二、連接容器創(chuàng)建三個容器,分別前兩個使用默認(rèn)網(wǎng)絡(luò)啟動容器,第三個使用自定義bridge網(wǎng)絡(luò)啟動。
然后再將第二個容器添加到自定義網(wǎng)絡(luò)。
這三個容器的網(wǎng)絡(luò)情況如下:
第一個容器:
只有默認(rèn)的docker0第二個容器:
屬于兩個網(wǎng)絡(luò)——docker0、自定義網(wǎng)絡(luò)第三個容器:
只屬于自定義網(wǎng)絡(luò)說明:
通過容器啟動指定的網(wǎng)絡(luò)會覆蓋默認(rèn)bridge網(wǎng)絡(luò)docker0。
# 創(chuàng)建三個容器 conTainer1,container2,container3 docker run -itd --name=container1 busybox docker run -itd --name=container2 busybox # 創(chuàng)建網(wǎng)絡(luò)mynet docker network create -d bridge --subnet 172.25.0.0/16 mynet # 將容器containerr2連接到新建網(wǎng)絡(luò)mynet docker network connect mynet container2 # 使用mynet網(wǎng)絡(luò)來容器container3 docker run --net=mynet --ip=172.25.3.3 -itd --name=container3 busybox # 查看這三個容器的網(wǎng)絡(luò)情況 docker network inspect container1 # docker0 docker network inspect container2 # docker0, mynet docker network inspect container3 # mynet三、默認(rèn)網(wǎng)絡(luò)與自定義bridge網(wǎng)絡(luò)的差異默認(rèn)網(wǎng)絡(luò)docker0:
網(wǎng)絡(luò)中所有主機(jī)間只能用IP相互訪問。
通過--link選項創(chuàng)建的容器可以對鏈接的容器名(container-name)作為hostname進(jìn)行直接訪問。
自定義網(wǎng)絡(luò)(bridge):
網(wǎng)絡(luò)中所有主機(jī)除ip訪問外,還可以直接用容器名(container-name)作為hostname相互訪問。
# 進(jìn)入container2內(nèi)部 docker attach container2 ping -w 4 container3 # 可訪問 ping -w 4 container1 # 不可訪問 ping -w 4 172.17.0.2 # 可訪問container1的IP # Ctrl+P+Q退出容器,讓container2以守護(hù)進(jìn)程運(yùn)行四、默認(rèn)網(wǎng)絡(luò)與自定義bridge網(wǎng)絡(luò)在容器連接的差別在默認(rèn)網(wǎng)絡(luò)中使用link(legency link),有如下功能:
- 使用容器名作為hostname - link容器時指定alias: --link=: - 配合--icc=false隔離性,實現(xiàn)容器間的安全連接 - 環(huán)境變量注入自定義網(wǎng)絡(luò)中使用docker net提供如下功能:
- 使用DNS實現(xiàn)自動化的名稱解析 - 一個網(wǎng)絡(luò)提供容器的安全隔離環(huán)境 - 動態(tài)地attach與detach到多個網(wǎng)絡(luò) - 支持與--link選項一起使用,為鏈接的容器提供別名(可以是尚不存在鏈接容器,與默認(rèn)容器中–link使用的最大差別)默認(rèn)網(wǎng)絡(luò)中的link是靜態(tài)的,不允許鏈接容器重啟,而自定義網(wǎng)絡(luò)下的link是動態(tài)的,支持鏈接容器重啟(以及IP變化) 因此,使用--link時鏈接的容器,在默認(rèn)網(wǎng)絡(luò)中必須提前創(chuàng)建好,而自定義網(wǎng)絡(luò)下不必預(yù)先建好。
使用docker network connetct將容器連接到新網(wǎng)絡(luò)中時,用參數(shù)--link鏈接相同的容器時,可以指定不同的別名,它們是針對不同網(wǎng)絡(luò)的。
# 運(yùn)行容器使用自定義網(wǎng)絡(luò),同時使用--link鏈接尚不存在的container5容器 docker run --net=mynet -itd --name=container4 --link container5:c5 busybox # 創(chuàng)建容器container5 docker run --net=mynet -itd --name=container5 --link container4:c4 busybox # 雖然是相同容器,但是在不同的網(wǎng)絡(luò)環(huán)境連接中可以不同的alias鏈接 docker network connect --link container5:foo local_alias container4 docker network connect --link container4:bar local_alias container5五、指定容器在網(wǎng)絡(luò)范圍的別名(Network-scoped alias)Network-scoped alias就是指定容器在可被同一網(wǎng)絡(luò)范圍內(nèi)的其他容器訪問的別名。
不同于link別名的是,link別名是由鏈接容器的使用者提供的,只有它自己可使用; 而指定網(wǎng)絡(luò)范圍內(nèi)別名,是由容器提供給網(wǎng)絡(luò)中其它容器使用的。
Network-scoped alias:
同一網(wǎng)絡(luò)中的多個容器可以指定相同的別名,在使用的當(dāng)然只有第一個指定別名的容器才生效, 只有當(dāng)?shù)谝粋€容器關(guān)閉時,指定相同別名的第二個容器的別名才會開始生效。
docker run --net=mynet -itd --name=container6 --net-alias app busybox docker network connect --alias scoped-app local_alias container6 docker run --net=isolated_nw -itd --name=container7 --net-alias app busybox docker network connect --alias scoped-app local_alias container7 # 在container4中 docker attach container4 ping app # 訪問container6的IP # 從container4中以守護(hù)進(jìn)程運(yùn)行退出:
Ctrl+P+Q docker stop container6 docker attach container4 ping app # 訪問的container7的IP六、斷開網(wǎng)絡(luò)與移除網(wǎng)絡(luò)# 容器從mynet網(wǎng)絡(luò)中斷開(它將無法再網(wǎng)絡(luò)中的容器container3通訊) docker network disconnect mynet container2 # 測試與容器container3失敗 docker attach container2 ping contianer3 # 訪問失敗在多主機(jī)的網(wǎng)絡(luò)環(huán)境中,在將容器用已移除的容器名稱連接到網(wǎng)絡(luò)中時會出現(xiàn)container already connected to network的錯誤, 這時需要將新容器強(qiáng)制移除docker rm -f,重新運(yùn)行并連接到網(wǎng)絡(luò)中。
移除網(wǎng)絡(luò)要求網(wǎng)絡(luò)中所有的容器關(guān)閉或斷開與此網(wǎng)絡(luò)的連接時,才能夠使用移除命令:
# 斷開最后一個連接到mynet網(wǎng)絡(luò)的容器 docker network disconnet mynet container3 # 移除網(wǎng)絡(luò) docker network rm mynet以上就是docker network命令詳解的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
微信
分享相關(guān)標(biāo)簽:
docker network本文轉(zhuǎn)載于:
csdn,如有侵犯,請聯(lián)系[email protected]刪除
上一篇:
Docker怎么查看容器IP地址?
下一篇:
沒有了相關(guān)文章相關(guān)視頻PHP_NETWORK_GETADDRESSES:...AFNetworking post到后端,數(shù)據(jù)怎么...PHP_NETWORK_GETADDRESSES:...NetworkError: 504 Gateway...docker network命令詳解Docker 的數(shù)據(jù)卷容器Docker 數(shù)據(jù)卷的備份和還原Docker 部署
[做網(wǎng)站常見問題]