Docker进阶
470字约2分钟
2025-11-21
Docker会给每个容器分配一个IP(桥接模式)
[root@hadoop01 dockerDemo]# docker ps
CONTAINER ID IMAGE ... NAMES
638d5152610b tomcat:latest ... tomcat[root@hadoop01 dockerDemo]# ip add
# docker网卡
5: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:84:af:4f:9b brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:84ff:feaf:4f9b/64 scope link
valid_lft forever preferred_lft forever
# 每个容器对应的网卡
107: veth8e05dcb@if106: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
link/ether 2e:68:5c:07:aa:b6 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::2c68:5cff:fe07:aab6/64 scope link
valid_lft forever preferred_lft forever容器之间相互通信
docker run -d -it --name tomcat1 --link 对应访问的容器 镜像名[root@hadoop01 dockerDemo]# docker ps
CONTAINER ID IMAGE ... NAMES
638d5152610b tomcat:latest ... tomcat1# 运行一个叫 tomcat2 的容器,并且链接一个名为 tomcat1 容器
docker run -d -it --name tomcat2 --link tomcat1 tomcat原理:修改Linux中的hosts文件,进行ip绑定
注意:tomcat2访问tomcat1可以访问,但是tomcat1访问tomcat2就不可以访问,因为tomcat1没有指定tomcat2,为了解决这个问题,推荐使用 自定义网络 解决
自定义网络
自定义网络就不需要定义 --link,可以直接通过容器名访问
docker network create --driver bridge --subnet 自定义ip段 --gateway 自定义网关 该网络配置名称docker network create:基础命令,用于创建新的 Docker 网络。
使用自定义网络配置
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
docker run -d -it -P --name tomcat-nat-1 --net mynet tomcat
docker run -d -it -P --name tomcat-nat-2 --net mynet tomcat当容器之间使用的不是同一个网络配置,如下图,
tomcat1访问tomcat-net-1

docker network connect mynet tomcat1将tomcat1链接到mynet中,这样tomcat1就可以访问mynet中所有的容器了
