Docker网络管理
1 Docker网络驱动模式
- bridge network(网桥):默认的网络模式
- host network(主机):容器与宿主机之间的网络无隔离,即容器直接使用宿主机网络
- none network:容器禁用所有网络
- overlay network(覆盖网络):利用VXLAM实现的bridge模式
- macvlan network:容器具备Mac地址,使其显示为网络上的物理设备
2 Docker网络管理命令
2.1 创建网络 - docker network create
- 创建新的网络对象
docker network create [OPTIONS] NETWORK
- 示例:
- 制动网络的驱动:
docker network create -d bridge NAME
- 制动网络的驱动:
2.2 删除网络 - docker network rm
- 删除一个或多个网络
docker network rm NETWORK [NETWORK...]
2.3 查看网络详细信息 - docker inspect
docker inspect NETWORK
2.4 网络使用
- 默认使用NAME为bridge的网络:
docker run -dti IMAGE COMMAND
- 指定网络:
docker run --network my-bridge IMAGE COMMAND
2.5 网络连接与断开 - docker network connect/disconnect
- 将指定容器与指定网络进行连接或断开连接
docker network connect [OPTIONS] NETWORK CONTAINER
docker network disconnect [OPTIONS] NETWORK CONTAINER
- 示例:
- 强制断开连接:
docker network disconnect -f NETWORK CONTAINER
- 强制断开连接:
3 Docker网络模式
3.1 bridge 网络模式
特点
- 宿主机上需要单独的bridge网卡,如默认docker默认创建的docker0。
- 容器之间、容器与主机之间的网络通信,是借助为每一个容器生成的一对veth pair虚拟网络设备对,进行通信的。一个在容器上,另一个在宿主机上。
- 每创建一个基于bridge网络的容器,都会自动在宿主机上创建一个veth**虚拟网络设备。
- 外部无法直接访问容器。需要建立端口映射才能访问。
- 容器借由veth虚拟设备通过如docker0这种bridge网络设备进行通信。
- 每一个容器具有单独的IP。
定制bridge网络
docker network create --subnet 192.168.0.0/16 --ip-range 192.168.10.0/24 --gateway 192.168.10.1 custom-bridge
docker run -dit --network custom-bridge IMAGE
端口映射
- 将容器内部的所有暴露端口进行随机映射
docker run/create -P ...
- 指定端口映射
docker run/create -p 192.168.0.0:8888:3306
3.2 host 网络模式
特点
- 容器完全共享宿主机网络。网络没有隔离,宿主机的网络就是容器的网络。
- 容器、主机上应用端口不能重复。
- 外部可以直接访问容器,不需要端口映射。
- 容器的IP就是宿主机的IP。
3.3 container网络模式
特点
- 容器共享其他容器的网络
- 应用得较多,且host网络性能最优
docker run/create --network container:CONTAINER ...
3.4 none网络模式
特点
- 容器上没有网络,也无任何网络设备。
- 如果需要使用网络,需要用户自行安装与配置。
- 适合需要高度定制网络的用户使用。
3.5 overlay网络模式
- 主要用于实现跨主机容器之间的通信。
- 适用于需要管理成百上千个跨主机的容器集群的网络场景。
3.6 macvlan网络模式
特点
- 通信基于mac地址进行转发。这时宿主机充当二层交换机 。Docker会维护一个MAC地址表,当宿主机收到数据包后,直接根据mac地址找到对应的容器,再把数据交给对应的容器。
- 容器之间可以直接通过IP互通,通过宿主机上内建的虚拟网络设备(创建macvlan网络时自动创建),但无法与主机直接通过IP互通。
- 适用于需要让容器的网络看起来是一个真实的物理设备的场景。