Docker容器互联(六)

Docker容器互联(六)

一、场景介绍

介绍在一个宿主机中的多个容器之间的互联、拒绝链接以及允许特定容器间的连接

二、多个容器互联

docker默认同一个宿主机中的容器是可以互相连通的。

缺点:每当容器重启后IP地址都会重新分配,该容器无法提供稳定的服务。

 1、环境介绍

使用centos镜像创建容器,因centos是简化版,没有ifconfig命令,需要安装。

#安装net-tools工具解决ifconfig
yum -y install net-tools 

2、创建两个容器C1和C2进行互联

#创建c1容器
docker run -it --name c1  centos /bin/bash

#创建c2容器
docker run -it --name c2  centos /bin/bash

1、在容器内使用ifconfig查看两个容器的IP地址

c1容器创建后IP地址:172.17.0.2

c2容器创建后IP地址:172.17.0.3

2、在c2容器中ping c1容器的地址,能够ping通。

3、 进入c1容器中ping c2容器地址,能够ping通。

组合键 Ctrl+p+q 退出c2容器

进入c1容器 docker attach c1

三、容器 link方式互联

容器 link方式互联可以解决上面因容器重启IP重新分配导致不能提供稳定服务的问题。

link工作原理:link自动将对方容器的IP地址和容器的名称映射到自己的hosts文件中,当容器重启后hosts中会自动刷新容器的IP地址,因此link通过容器名称访问,不受IP地址变化的影响。

1、创建 link

#link命令使用
docker run -it --name c3 --link=c1:c3-c1 centos /bin/bash

link命令介绍

  • link完整的参数:--link=[container_name]:[alisa] 
  • container:目标容器名称
  • alisa:为了方便记忆,给目标容器起个别名。 

 2、查看hosts

目标容器的IP和名称自动映射到了c3容器的hosts中。

 3、通过容器别名访问目标容器

4、重启docker容器验证是否可以解决IP地址重新分配链接问题

#重启docker容器
docker restart c1 c3
#进入c3容器
docker attach c3
#连接c1容器
ping c3-c1

 

四、拒绝容器间的访问

在docker启动配置文件中添加icc=false

icc=true :默认为true 容器间可进行互联,改为false拒绝容器间互联

五、只允许特定容器间的互联

1、在启动配置文件中添加icc和iptables

  • 设置icc=false:--icc=false
  • iptables=true: --iptables=true

2、启动容器添加link指定要连接的目标容器。例如:启动c3容器 link到c1容器

3、清除iptables

  • iptables -F

4、重启启动docker服务

  • systemctl restart docker

5、再次启动docker容器,进入c3容器访问c1。访问成功。

发布了268 篇原创文章 · 获赞 104 · 访问量 39万+

猜你喜欢

转载自blog.csdn.net/m0_38039437/article/details/99859304