Docker 网络

docker 网络

Docker支持5种网络模式

  • bridge
    默认网络,Docker启动后默认创建一个docker0网桥,默认创建的容器也是添加到这个网桥中。
  • host
    容器不会获得一个独立的network namespace,而是与宿主机共用一个。
  • none
    获取独立的network namespace,但不为容器进行任何网络配置。
  • container
    与指定的容器使用同一个network namespace,网卡配置也都是相同的。
    -自定义
    自定义网桥,默认与bridge网络一样。

Linux IP信息包过滤原理:

Docker主要通过netfilter/iptables实现网络通信。
iptables由netfilter和iptables组成,netfilter组件是Linux内核集成的信息包过滤系统,它维护一个信息包过滤表,这个表用于控制信息包过滤处理的规则集。而iptables只是一个在用户空间的工具,用于增删改查这个过滤表的规则。

容器访问外部

1
2
3
4
# iptables -t nat -nL
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all --172.17.0.0/16 0.0.0.0/0

外部访问容器

1
2
3
4
# iptables -t nat -nL
Chain DOCKER (2 references)
target prot opt source destination
DNAT tcp --0.0.0.0/0 0.0.0.0/0 tcp dpt:88 to:172.18.0.2:80

容器访问外部原理