Docker 网络模式

  1. bridge模式 docker默认的模式,这种模式下,docker容器默认使用安装docker时创建的网卡docker0,和宿主机不在同一网段,不能和宿主机的网段通信。每一个容器都有 Network Namespace,都有自己的IP。 一个宿主机上所有的容器都通过docker0这个网卡连在一个二层网络里。

  2. host模式 这个模式下,Docker容器不会获得独立的Network Namespace,而是和宿主机共用一个Network Namespace,容器不会虚拟出自己的网卡或者配置自己的IP等,直接使用宿主机的IP和端口,不需要转换。 当然除了网络外,容器和宿主机还是隔离的。

  3. container模式 新创建的Docker容器和已存在的一个Docker容器共享一个Network Namespace,不和宿主机共享。

  4. None模式 Docker容器拥有自己的Network Namespace,但是Docker容器没有网卡、IP和路由等信息,需要手动对容器配置网卡、IP等信息

  5. overlay模式 两个跨主机的容器之间进行通信时,通常使用overlay模式,当然使用host模式也可以。overlay的模式下载docker集群节点间加入了一层虚拟网络,docker容器发送的内容,会先 发送到虚拟子网,虚拟子网再包装成宿主机的真正网址进行发送。

在docker模式下,docker不会暴露端口给宿主机,这样在同一台服务器上,不会引起端口冲突。

overlay的网络模式需要一个key-value数据库保存网络状态信息,包括Network、Endpoint、IP等,Consul、Etcd、Zookeeper都可以起到这样的作用。 docker节点的配置文件里需要加入consul的配置,这样容器间可以通过consul做发现。

Written on November 3, 2019