docker network命令詳解

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

docker network命令詳解

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