写点什么

Docker 原理——启动时的 icc 标志的原理

作者:kof11321
  • 2022 年 3 月 14 日
  • 本文字数:1094 字

    阅读完需:约 4 分钟

每天进步一点点,每天学一个小知识。

今天我们来看看,docker 启动的时候,指定--icc=false,就可以达到容器间的互相隔离,容器不能互相访问,那么这是如何实现的

参考文献:

https://docs.docker.com/engine/reference/commandline/dockerd/ 中的--icc 标志

问题排查步骤

在对于网络知识不是很熟悉的情况下,最笨的办法,将容器--icc=true 和--icc=false 的情况下,分别启动,观察两种启动方式的差别。--icc=true 的情况下,观察 iptables 之间的差别(执行命令 sudo iptables -nvL,特别关注跟 docker 相关的 chain)

# sudo iptables -nvL# --icc=trueChain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target     prot opt in     out     source               destination             0     0 DOCKER-USER  all  --  *      *       0.0.0.0/0            0.0.0.0/0               0     0 DOCKER-ISOLATION-STAGE-1  all  --  *      *       0.0.0.0/0            0.0.0.0/0               0     0 ACCEPT     all  --  *      docker0  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED    0     0 DOCKER     all  --  *      docker0  0.0.0.0/0            0.0.0.0/0               0     0 ACCEPT     all  --  docker0 !docker0  0.0.0.0/0            0.0.0.0/0           # 此处输出发生了变化,从docker0到docker0的包,是ACCEPT    0     0 ACCEPT     all  --  docker0 docker0  0.0.0.0/0            0.0.0.0/0             
# --icc=falseChain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 DOCKER-USER all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 DOCKER-ISOLATION-STAGE-1 all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 0 0 DOCKER all -- * docker0 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0 # 此处输出发生了变化,从docker0到docker0的包,变成了DROP 0 0 DROP all -- docker0 docker0 0.0.0.0/0 0.0.0.0/0
复制代码

经过仔细对比,可以发现 iptables 的 FORWARD chain 上,从 docker0 进来,出口也是 docker0 的规则发生了变化,从 ACCEPT 变成了 DROP。


用户头像

kof11321

关注

还未添加个人签名 2018.08.14 加入

喜欢弄懂原理,JAVA,GOLANG,零信任,IAM

评论

发布
暂无评论
Docker原理——启动时的icc标志的原理_Docker_kof11321_InfoQ写作平台