Docker network自定義網(wǎng)絡(luò)方式
Docker network自定義網(wǎng)絡(luò)
現(xiàn)在官方已經(jīng)廢棄了 run --link 的使用(可通過(guò)容器名來(lái) Ping 通),所以我們可以采用自定義網(wǎng)絡(luò)的做法來(lái)聯(lián)通容器
第一步
組建子網(wǎng),我取名為 nettest
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 nettest
注意我這里是使用IP地址前16位作為CIDR前綴,不要和集群內(nèi)的其他子網(wǎng)沖突

可用 docker network inspect nettest 指令查看子網(wǎng)信息
[
{
"Name": "nettest",
"Id": "241ec33539eae571bd0ce269f9b6ec8525dfbbe5e96d1c7e00539fa10a0adc10",
"Created": "2022-03-31T13:07:44.672058045+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "192.168.0.0/16",
"Gateway": "192.168.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]第二步
向nettest子網(wǎng)添加容器,這里我將兩個(gè)我自己定義的centos容器加入了該子網(wǎng)
docker run -d -P --name centos-net-01 --net nettest mycentos docker run -d -P --name centos-net-02 --net nettest mycentos
如果不指定net,則會(huì)自動(dòng)加入bridge網(wǎng)絡(luò)(對(duì)應(yīng)于docker0網(wǎng)橋)

此時(shí)再次查看子網(wǎng)信息
[
{
"Name": "nettest",
"Id": "241ec33539eae571bd0ce269f9b6ec8525dfbbe5e96d1c7e00539fa10a0adc10",
"Created": "2022-03-31T13:07:44.672058045+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "192.168.0.0/16",
"Gateway": "192.168.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"126e1b28a5958ee159fa16073501cbc61508ce803ccaab1682489fb859fe6ae3": {
"Name": "centos-net-02",
"EndpointID": "14ae44c2a7f9b7572b814e86c06fef3597d5eb2308ea588c91cabe38d22ec426",
"MacAddress": "02:42:c0:a8:00:03",
"IPv4Address": "192.168.0.3/16",
"IPv6Address": ""
},
"903a5af6d1050998523a23b10f0dcee86f7d8a35cca8544ea5499b5cd6d22c9f": {
"Name": "centos-net-01",
"EndpointID": "7c1ff29b1fad9df3943d4d3eda6520cce66ebcbe61a8c5127b3161ddb7f6649a",
"MacAddress": "02:42:c0:a8:00:02",
"IPv4Address": "192.168.0.2/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]可以發(fā)現(xiàn) "Containers" 下多了兩個(gè)容器對(duì)象
而網(wǎng)關(guān)為宿主機(jī)

第三步
測(cè)試子網(wǎng)內(nèi)的容器是否能聯(lián)通

可以發(fā)現(xiàn)通過(guò)容器名和其對(duì)應(yīng)的內(nèi)網(wǎng)IP都能Ping通
而這種自定義網(wǎng)絡(luò)我在容器的/etc/hosts中并沒(méi)有看到其他容器的域名IP映射

如果后續(xù)還需要向該子網(wǎng)添加容器,可以使用以下指令
docker network connect multi-host-network container1
[root@Hadoop100 docker-test-volume]# docker network connect nettest centos-net-03
[root@Hadoop100 docker-test-volume]# docker network inspect nettest
[
{
"Name": "nettest",
"Id": "241ec33539eae571bd0ce269f9b6ec8525dfbbe5e96d1c7e00539fa10a0adc10",
"Created": "2022-03-31T13:07:44.672058045+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "192.168.0.0/16",
"Gateway": "192.168.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"126e1b28a5958ee159fa16073501cbc61508ce803ccaab1682489fb859fe6ae3": {
"Name": "centos-net-02",
"EndpointID": "14ae44c2a7f9b7572b814e86c06fef3597d5eb2308ea588c91cabe38d22ec426",
"MacAddress": "02:42:c0:a8:00:03",
"IPv4Address": "192.168.0.3/16",
"IPv6Address": ""
},
"163f33f66ba95bc9ee7dece20f87fe7c18ec290cd2618145bba1a07d7ebf2b6e": {
"Name": "centos-net-03",
"EndpointID": "6854d517cae02fa4b41fdd4c6406afd61c6529a573257829bc78003dca01b079",
"MacAddress": "02:42:c0:a8:00:04",
"IPv4Address": "192.168.0.4/16",
"IPv6Address": ""
},
"903a5af6d1050998523a23b10f0dcee86f7d8a35cca8544ea5499b5cd6d22c9f": {
"Name": "centos-net-01",
"EndpointID": "7c1ff29b1fad9df3943d4d3eda6520cce66ebcbe61a8c5127b3161ddb7f6649a",
"MacAddress": "02:42:c0:a8:00:02",
"IPv4Address": "192.168.0.2/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]我之前使用run --link來(lái)聯(lián)通容器時(shí),發(fā)現(xiàn)其中被link的源容器被我stop后兩個(gè)容器都從docker進(jìn)程中消失了,而這種自定義網(wǎng)絡(luò)則不會(huì)出現(xiàn)這種奇怪的現(xiàn)象
最后需要強(qiáng)調(diào)一點(diǎn),千萬(wàn)不要試圖去使用 docker network rm -f $(docker network ls -q) 這種指令,這可能會(huì)把docker默認(rèn)創(chuàng)建的網(wǎng)絡(luò)也給刪去!
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker搭建代碼檢測(cè)平臺(tái)SonarQube并檢測(cè)maven項(xiàng)目的流程
這篇文章主要介紹了Docker搭建代碼檢測(cè)平臺(tái)SonarQube并檢測(cè)maven項(xiàng)目,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
Docker容器harbor私有倉(cāng)庫(kù)部署和管理
這篇文章主要介紹了Docker容器harbor私有倉(cāng)庫(kù)部署和管理,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的的參考價(jià)值,需要的朋友可以參考一下2022-08-08
Docker如何多步構(gòu)建生成dubbo-admin鏡像詳解
dubbo-admin是dubbo框架的管理平臺(tái),下面這篇文章主要給大家介紹了關(guān)于Docker如何多步構(gòu)建生成dubbo-admin鏡像的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2018-04-04
Docker的安裝過(guò)程以及服務(wù)器與客戶端之間的通信
文章簡(jiǎn)要介紹了在Ubuntu24.04系統(tǒng)上安裝Docker的流程,包括修改apt源、安裝服務(wù)端與客戶端、配置鏡像目錄、端口通信及SSH連接,最終實(shí)現(xiàn)客戶端與服務(wù)端的成功通信驗(yàn)證2025-08-08
docker部署mysql和nginx服務(wù)的示例詳解
這篇文章主要為大家詳細(xì)介紹了docker部署mysql和nginx服務(wù)的相關(guān)知識(shí),文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04
使用docker -v 和 Publish over SSH插件實(shí)現(xiàn)war包自動(dòng)部署到docker的操作步驟
這篇文章主要介紹了利用docker -v 和 Publish over SSH插件實(shí)現(xiàn)war包自動(dòng)部署到docker的操作步驟,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-01-01
關(guān)于Docker容器內(nèi)部無(wú)法解析域名問(wèn)題的解決
最近工作中遇到一個(gè)問(wèn)題,項(xiàng)目?jī)?nèi)部需要訪問(wèn)外網(wǎng),但上傳文件,但是一直報(bào)unknown host,無(wú)法解析域名,所以下面這篇文章主要給大家介紹了關(guān)于Docker容器內(nèi)部無(wú)法解析域名問(wèn)題的解決方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-07-07
淺談關(guān)于Docker容器互聯(lián)的初步實(shí)踐
這篇文章主要介紹了淺談關(guān)于Docker容器互聯(lián)的初步實(shí)踐,本文介紹了使用網(wǎng)橋(bridge)來(lái)對(duì)容器進(jìn)行互聯(lián),非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-10-10

