Docker容器互访三种方式
方式一、虚拟ip访问
安装docker时,docker会默认创建一个内部的桥接网络docker0,每创建一个容器分配一个虚拟网卡,容器之间可以根据ip互相访问。
1 | # ifconfig |
运行一个centos镜像, 查看ip地址得到:172.17.0.7
1 | # docker run -it --name centos-1 docker.io/centos:latest |
以同样的命令再起一个容器,查看ip地址得到:172.17.0.8
1 | # docker run -it --name centos-2 docker.io/centos:latest |
容器内部ping测试结果如下:
1 | # ping 172.17.0.7 |
这种方式必须知道每个容器的ip,在实际使用中并不实用。
方式二、link
运行容器的时候加上参数link
运行第一个容器
1 | docker run -it --name centos-1 docker.io/centos:latest |
运行第二个容器
1 | docker run -it --name centos-2 \ |
--link:参数中第一个centos-1是 容器名 ,第二个centos-1是定义的 容器别名 (使用别名访问容器),为了方便使用,一般别名默认容器名。
测试结果如下:
1 | # ping centos-1 |
此方法对容器创建的顺序有要求,如果集群内部多个容器要互访,使用就不太方便。
方式三、创建bridge网络
- 安装好docker后,运行如下命令创建bridge网络:
1 | docker network create testnet |
查询到新创建的bridge testnet。

- 运行容器连接到testnet网络。
使用方法:1
2
3docker run -it --name <容器名> \
--network <bridge> \
--network-alias <网络别名> <镜像名>
1 | docker run -it --name centos-1 --network testnet \ |
- 从一个容器ping另外一个容器,测试结果如下:
1 | # ping centos-1 |
- 若访问容器中服务,可以使用这用方式访问 <网络别名>:<服务端口号>
推荐使用这种方法,自定义网络,因为使用的是网络别名,可以不用顾虑ip是否变动,只要连接到docker内部bright网络即可互访。bridge也可以建立多个,隔离在不同的网段。

