Docker 网络是 Docker 容器化平台的重要组成部分,它允许容器之间以及容器与外部网络进行通信。Docker 提供了多种网络驱动和配置选项,以满足不同的网络需求。本文将详细介绍 Docker 网络的相关知识,并提供示例帮助理解。
1. Docker 网络基础
1.1 网络驱动
Docker 支持多种网络驱动,包括:
- bridge:默认的网络驱动,用于在单个主机上连接多个容器。
- host:移除网络隔离,直接使用主机的网络栈。
- overlay:用于连接多个 Docker 守护进程,实现跨主机的容器通信。
- macvlan:允许为容器分配 MAC 地址,使其在网络上显示为物理设备。
- none:禁用容器的网络功能。
1.2 网络模式
Docker 容器的网络模式包括:
- bridge:默认模式,容器通过虚拟网桥与主机通信。
- host:容器与主机共享网络栈,没有网络隔离。
- none:容器没有网络接口。
- container:容器共享另一个容器的网络命名空间。
2. 默认桥接网络(bridge)
默认情况下,Docker 会创建一个名为 bridge
的桥接网络。所有新创建的容器都会自动连接到这个网络,除非指定其他网络。
2.1 创建容器并连接到默认桥接网络
docker run -d --name mycontainer nginx
2.2 查看默认桥接网络
docker network inspect bridge
3. 自定义桥接网络
自定义桥接网络提供了更好的隔离性和灵活性。你可以创建自定义桥接网络,并将容器连接到这个网络。
3.1 创建自定义桥接网络
docker network create mynetwork
3.2 创建容器并连接到自定义桥接网络
docker run -d --name mycontainer1 --network mynetwork nginx
docker run -d --name mycontainer2 --network mynetwork nginx
3.3 查看自定义桥接网络
docker network inspect mynetwork
4. 主机网络(host)
在主机网络模式下,容器与主机共享网络栈,没有网络隔离。这种模式适用于需要直接访问主机网络的应用程序。
4.1 创建容器并使用主机网络
docker run -d --name mycontainer