docker容器互访

方式一、虚拟ip访问

 安装docker时,docker会默认创建一个内部的桥接网络docker0,每创建一个容器分配一个虚拟网卡,容器之间可以根据ip互相访问。172.17.0.1

这种方式必须知道每个容器的ip,在实际使用中并不实用。

方式二、link

运行容器的时候加上参数link

运行第一个容器

docker run -it --name centos-1 docker.io/centos:latest

运行第二个容器

[root@CentOS ~]# docker run -it --name centos-2 --link centos-1:centos-1 docker.io/centos:latest

--link:参数中第一个centos-1是容器名,第二个centos-1是定义的容器别名(使用别名访问容器),为了方便使用,一般别名默认容器名。

此方法对容器创建的顺序有要求,如果集群内部多个容器要互访,使用就不太方便。


方式三、创建bridge网络

1.安装好docker后,运行如下命令创建bridge网络:docker network create testnet

查询到新创建的bridge testnet。



2.运行容器连接到testnet网络。

使用方法:docker run -it --name <容器名> ---network --network-alias <网络别名> <镜像名>

[root@CentOS ~]# docker run -it --name centos-1 --network testnet --network-alias centos-1 docker.io/centos:latest

[root@CentOS ~]# docker run -it --name centos-2 --network testnet --network-alias centos-2 docker.io/centos:latest

3.从一个容器ping另外一个容器,测试结果如下:

[root@fafe2622f2af /]# ping centos-1

PING centos-1 (172.20.0.2) 56(84) bytes of data.

64 bytes from centos-1.testnet (172.20.0.2): icmp_seq=1 ttl=64 time=0.158 ms

64 bytes from centos-1.testnet (172.20.0.2): icmp_seq=2 ttl=64 time=0.108 ms

64 bytes from centos-1.testnet (172.20.0.2): icmp_seq=3 ttl=64 time=0.112 ms

64 bytes from centos-1.testnet (172.20.0.2): icmp_seq=4 ttl=64 time=0.113 ms

推荐使用这种方法,自定义网络,因为使用的是网络别名,可以不用顾虑ip是否变动,只要连接到docker内部bright网络即可互访。bridge也可以建立多个,隔离在不同的网段。

你可能感兴趣的:(docker容器互访)