Docker network自定義網(wǎng)絡(luò)方式
Docker network自定義網(wǎng)絡(luò)
現(xiàn)在官方已經(jīng)廢棄了 run --link 的使用(可通過容器名來 Ping 通),所以我們可以采用自定義網(wǎng)絡(luò)的做法來聯(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,則會自動加入bridge網(wǎng)絡(luò)(對應(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è)容器對象
而網(wǎng)關(guān)為宿主機(jī)
第三步
測試子網(wǎng)內(nèi)的容器是否能聯(lián)通
可以發(fā)現(xiàn)通過容器名和其對應(yīng)的內(nèi)網(wǎng)IP都能Ping通
而這種自定義網(wǎng)絡(luò)我在容器的/etc/hosts中并沒有看到其他容器的域名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來聯(lián)通容器時(shí),發(fā)現(xiàn)其中被link的源容器被我stop后兩個(gè)容器都從docker進(jìn)程中消失了,而這種自定義網(wǎng)絡(luò)則不會出現(xiàn)這種奇怪的現(xiàn)象
最后需要強(qiáng)調(diào)一點(diǎn),千萬不要試圖去使用 docker network rm -f $(docker network ls -q) 這種指令,這可能會把docker默認(rèn)創(chuàng)建的網(wǎng)絡(luò)也給刪去!
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
WIN10系統(tǒng)和Docker內(nèi)部容器IP互通方式
這篇文章主要介紹了WIN10系統(tǒng)和Docker內(nèi)部容器IP互通方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11jenkins+docker+nginx+nodejs持續(xù)集成部署vue前端項(xiàng)目
本文主要介紹了jenkins+docker+nginx+nodejs持續(xù)集成部署vue前端項(xiàng)目,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05解讀Dockerfile中CMD和ENTRYPOINT是否可以混著用
在Dockerfile中,CMD和ENTRYPOINT可以混著用,CMD指定默認(rèn)命令,ENTRYPOINT指定啟動命令,CMD可以被docker run命令的參數(shù)覆蓋2025-03-03Docker?部署分布式搜索引擎?Elastic?Search的詳細(xì)過程
Elasticsearch是一款非常強(qiáng)大的開源搜索引擎,具備非常多強(qiáng)大功能,可以幫助我們從海量數(shù)據(jù)中快速找到需要的內(nèi)容,這篇文章主要介紹了Docker?部署分布式搜索引擎?Elastic?Search,需要的朋友可以參考下2023-02-02關(guān)于Docker容器內(nèi)部無法解析域名問題的解決
最近工作中遇到一個(gè)問題,項(xiàng)目內(nèi)部需要訪問外網(wǎng),但上傳文件,但是一直報(bào)unknown host,無法解析域名,所以下面這篇文章主要給大家介紹了關(guān)于Docker容器內(nèi)部無法解析域名問題的解決方法,需要的朋友可以參考借鑒,下面來一起看看吧。2017-07-07詳解Windows?利用?WSL2?安裝?Docker?的2種方式
這篇文章主要介紹了Windows?利用?WSL2?安裝?Docker?的2種方式,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10