docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker容器互联

docker容器互联的实现步骤

作者:人间打气筒(Ada)

容器互联是除了端口映射外另一种可以与容器通信的方式,本文就来介绍一下docker容器互联的实现步骤,感兴趣的可以了解一下

一、容器互联概述:

容器互联是除了端口映射外另一种可以与容器通信的方式。端口映射的用途是宿主机网络与容器的通信,而容器互联是容器之间的通信。

当前实现容器互联有两种方式:

一种是把两个容器放进一个用户自定义的网络中,

另一种是使用--link参数(已经弃用,即将删除的功能)。

为什么要使用一个单独的网络来连接两个容器呢?

设想一下后端容器需要调用一个数据库环境,数据库容器和后端服务容器如果使用上下文中的暴露端口或者映射端口来通信,势必会把数据库的端口也暴露在外网中,导致数据库容器的安全性大大降低,为了解决这个问题,docker允许用户建立一个独立的网络来放置相应的容器,只有在该网络中的容器才能相互通信,外部容器是无法进入这个特定网络中的。

一个容器可以同时加入多个网络,使用不同地址可以访问不同网络中的容器。

二、案例实验:

1、用户自定义的网络:

首先创建两个容器,命名为cont1和cont2

[root@docker ~]# docker run -itd --name=cont1 busybox
[root@docker ~]# docker run -itd --name=cont2 busybox

2、查看当前的IP信息:

Cont1pingcont2测试:

接下来创建一个独立的容器网络,这里使用bridge驱动(桥接模式),其他可选的值还有overlay和macvlan。

[root@docker ~]# docker network create -d bridge --subnet 172.25.0.0/16 demo_net
[root@docker ~]# docker network ls

使用--subnet和--gateway可以指定子网和网关,现在我们把cont2加入到demo_net中

[root@docker ~]# docker network connect demo_net cont2
[root@docker ~]# docker network inspect demo_net

使用docker network inspect可以查看网络中容器的连接状态。Container2已经在demo_net网络中,注意IP地址使自动分配的。

[root@huyang1 ~]# docker exec -it 9a /bin/sh
/ # ifconfig

对比发现,此时cont2已经有了172.25.0.0的网络

3、启动第三个容器:

[root@docker ~]# docker run --network=demo_net --ip=172.25.3.3 -itd --name=cont3 busybox

[root@docker ~]# docker network inspect demo_net

此时,有三个容器,cont1和cont2可以ping通,cont2

和cont3可以ping通,而宿主机可以和三者任意ping通,详情如下图:

4、查看三个容器内部的网络:

[root@docker ~]# docker exec -it cont1 ifconfig

[root@docker ~]# docker exec -it cont2 ifconfig

[root@docker ~]# docker exec -it cont3 ifconfig

5、Ping测试:

【cont2】

[root@docker ~]# docker exec -it cont2 ping 172.17.0.2
[root@docker ~]# docker exec -it cont2 ping 172.25.3.3

【cont1】

[root@docker ~]# docker exec -it cont1 ping 172.17.0.2
[root@docker ~]# docker exec -it cont1 ping 172.25.0.2
[root@docker ~]# docker exec -it cont1 ping 172.25.3.3

【cont3】

[root@docker ~]# docker exec -it cont3 ping 172.17.0.2
[root@docker ~]# docker exec -it cont3 ping 172.25.0.2
[root@docker ~]# docker exec -it cont3 ping 172.17.0.3

Ps备注:

当发生三个容器cont1/2/3可以相互之间都能ping通,这时候,需要重启容器(systemctl restart docker),再开启测试!!!

到此这篇关于docker容器互联的实现步骤的文章就介绍到这了,更多相关docker容器互联内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文