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通了。

原文地址:https://www.cnblogs.com/yyee/p/15708696.html