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。访问成功。
文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。
原文链接:brucelong.blog.csdn.net/article/details/99859304
- 点赞
- 收藏
- 关注作者
评论(0)