在默认的网络模式bridge中,容器与容器之间只能通过IP互通无法解析主机名且无法通过主机名互通。
一、在默认网络模式下测试容器间的互通
新建两个容器
docker run -itd --name network1 --privileged centos:latest /usr/sbin/init
docker run -itd --name network2 --privileged centos:latest /usr/sbin/init
在默认网络模式bridge下测试:通过IP地址互ping两个容器,可以正常访问,通过服务名则无法访问。
通过IP互ping,通断没有问题
通过服务名互ping时会提示未知或找不到
二、将容器加入自定义网络测试主机名的互通
将容器的网络设置为自定义网络
#新建自定义网络
docker network create lr_network
新建容器网络设置为自定义网络
docker run -d --name lr1 --privileged=true --network lr_network centos:latest /usr/sbin/init
docker run -d --name lr2 --privileged=true --network lr_network centos:latest /usr/sbin/init
测试容器能否通过服务名互通
#进入容器1
docker exec -it lr1 bash
#进入容器2
docker exec -it lr2 bash
如图所示,通过为容器添加自定义网络可以使IP与主机名都互通。