docker創建自定義網絡,容器內部使用容器名相互ping通,配置不同網段互通


用docker默認的網絡 docker0 創建的容器,容器之間只能使用容器 ip 相互ping得通,使用容器名字ping不通。

使用docker自定義的網絡創建的容器,各容器之間既可以通過 ip 相互ping得通,也可以使用容器名相互ping得通。

【1】創建自定義網絡mynet

docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

參數說明:

--driver bridge #表示橋接模式
--subnet 192.168.0.0/16 #16表示最多支持65535個ip,可以分配192.168.0.2到192.168.255.255,如果沒有指定--subnet參數默認網段為172.17.0.0/16,默認網關為172.17.0.1;
--subnet 192.168.0.0/24 #24表示最多支持254個ip,可以分配192.168..0.2到192.168.0.255
--gateway #表示docker容器的網關
mynet表示網絡名

 

查看自定義網絡mynet的信息:

 

【2】創建容器

創建3個tomcat容器到默認網絡(docker0)

docker run -d -P --name tomcat01 tomcat
docker run -d -P --name tomcat02 tomcat
docker run -d -P --name tomcat03 tomcat

創建3個tomcat容器到自定義網絡(mynet)

docker run -d -P --name my-tomcat01 --net mynet tomcat
docker run -d -P --name my-tomcat02 --net mynet tomcat
docker run -d -P --name my-tomcat03 --net mynet tomcat

 查看默認網絡 docker0 的信息

docker network inspect bridge

 

查看自定義網絡 myne 的信息:

docker network inspect mynet

 

3】測試ping容器名以及ip地址

 

分別用my-demo01容器ping my-demo02容器的ip及容器名,看是否ping得通。

docker exec -it my-demo01 ping 192.168.0.3
docker exec -it my-demo01 ping my-demo02

 使用ping命令如果報下面的錯誤:

OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "ping": executable file not found in $PATH: unknown

這是因為容器只有基礎命令,沒有網絡命令導致,就先進入容器並且安裝網絡工具:

docker exec -it my-tomcat01 /bin/bash
apt update && apt install -y iproute2 && apt install -y net-tools && apt install -y iputils-ping

 

看圖信息,說明my--tomcat01無論是ping  my-tomcat02的ip還是容器名都可以通。

 

【4】將不同網段的容器互通

首先,mynet 網絡還未跟 tomcat01 容器連通,我們用mynet中的容器 my-tomcat01來ping一下docker0網絡中的 tomcat01 容器試試:

docker exec -it my-tomcat01 ping tomcat01

會出現 ping: tomcat01: Name or service not known 錯誤。

 

 然后,將自定義網絡 mynet 跟默認網絡 docker0 中的某個容器(比如:tomcat01)連通。

docker network connect mynet tomcat01

 

 

 

 查看一下mynet網格信息:

docker network inspect mynet

 

此時,tomcat01容器加入到mynet網絡中來了。再來 ping 一下加進來的容器:

docker exec -it my-tomcat01 ping tomcat01

這次ping通了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM