Docker 支持以下几种网络模式:
- bridge:默认模式。每个容器都会连接到一个Linux网桥,并被分配一个可路由的IPv4地址。
- host:容器共享宿主机的网络。
- none:容器关闭网络。
- container:将多个容器连接到同一个网络段,彼此可以直接通信。
- overlay:覆盖网络,多主机的容器互联。
主要区别如下:
- bridge:相对隔离,通过端口映射访问,可配置 docker0 桥接器。
- host:不隔离,直接使用宿主机网络。
- none:完全隔离,关闭网络。
- container:连接指定容器,与连接容器在同一网段。
- overlay:跨主机容器互联,实现容器的高可用与伸缩。
举例:
- bridge:
默认模式,使用 docker run -p 8080:80 nginx 映射端口访问。 - host:
使用 docker run –network host nginx 直接使用宿主机 80 端口。 - none:
使用 docker run –network none nginx 关闭容器网络。 - container:
先运行一个容器 docker run -d –name nginx nginx
再运行一个容器连接到它 docker run -d –network container:nginx ubuntu - overlay:
需要配置多个 Docker daemon 和 keys 才能使用。连接跨主机的容器。
理解各种网络模式的区别和用途,可以让我们为 Docker 容器选择恰当的网络设置。比如:
- 需要完全隔离时可以使用 none 网络。
- 多个容器需要互通时可以使用 container 网络。
- 需要跨主机互联时使用 overlay 网络。