问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Docker 网络详解:类型、应用场景及常用命令

创作时间:
作者:
@小白创作中心

Docker 网络详解:类型、应用场景及常用命令

引用
CSDN
1.
https://m.blog.csdn.net/qq_36833673/article/details/145364615

Docker网络是容器化技术中的重要组成部分,它决定了容器之间的通信方式以及容器与外部资源的交互方式。本文将详细介绍Docker网络的基本概念、不同类型及其应用场景,帮助读者更好地理解和使用Docker网络。

1:概述

Docker 网络主要是用于连接 Docker 容器的网络技术,容器可以通过虚拟网络来通信,用于实现容器之间通信以及容器与外部资源进行通信。默认情况下,每个容器都是隔离的。Docker 网络为应用程序定义了隔离边界,确保了容器之间的通信、容器与外部资源的通信。创建不同的网络,容器分布在不同的网络中,可以实现容器之间的隔离,提高安全性。

2:Docker 网络类型

(1):bridge:桥接网络,这是 Docker 默认的网络模式,同一桥接网络上的容器可以使用 ip 地址或容器名称进行互相通信,容器与外部的连接需要通过端口映射。

使用场景:适合单主机多容器之间的通信,如开发环境服务部署包括数据库、后端服务等,之间可以通过 bridge 网络模式通信,只能和同一台主机上的容器进行通信。

优点:Docker 网络默认使用 bridge 网络模式,运行容器会自动连接到默认的 docker0网桥,并获得私有 ip。每个容器在 bridge 网络中有自己独立的网络栈,容器之间互相隔离。容器之间通信方便。

缺点:跨主机通信不支持。

(2):host:主机网络,容器会共享宿主机的网络端口,直接使用主机的网络接口,性能高。隔离性会降低,安全性比较差。

使用场景:网络性能要求高的场景,如实时数据处理等。适用于信任容器之间的通信。

优点:直接使用宿主机的网络栈,避免了网络地址转换(NAT)和网桥转发带来的性能损耗,所以性能高,适用于实时数据处理系统、高吞吐量的服务等。无需进行端口映射,减少端口冲突的问题。容器可以更方便的与外部网络进行交互。

缺点:隔离性降低,安全性较差,如果受到攻击,可能会影响整个系统的运行。host 网络模式依赖宿主机的网络环境,导致迁移性比较差。容易导致端口冲突。

(3):none:无网络,主要用于某些特殊的场景,与外部网络及其他容器完全隔离,外界无法访问,安全性好。

使用场景:处理个人隐私数据、敏感的数据。

优点:有效防止了网络攻击,安全性比较高。没有网络性能开销,提高了任务执行的性能。

缺点:容器无法访问外部资源、数据交互复杂。

(4):Overlay:覆盖网络,主要用于 Docker Swarm 或 Kubernetes 等容器编排工具构建的集群中,如数据库服务、后端服务等,使用覆盖网络服务之间通信更加便捷,支持不同 Docker 守护进程上的容器之间的网络连接。这种模式 Docker 会创建一个虚拟网络, 不同主机上的容器连接到这个虚拟网络,所有连接到这个虚拟网络的容器都可以互相通信。

使用场景:跨多个 Docker 容器之间的通信,分布式应用部署、集群环境搭建。

优点:允许不同 Docker 宿主机上的容器直接通信,可以通过 ip 或者服务名进行通信。网络隔离性好,可以创建不同的覆盖网络,从而提高了系统的安全性。可以更加方便的进行拓展。

缺点:覆盖网络在数据传输过程中进行数据封装和解封,导致有一定的性能损耗。网络管理比较复杂,由于涉及到多宿主机、多个网络环境,如果出现问题,排查问题难度比较大

(5):Macvlan网络:容器有自己的 MAC 地址,容器可以直接连到宿主机的物理网络。

使用场景:直接访问物理网络的场景,如连接打印机等。

优点:网络隔离性好、性能较高。

缺点:配置复杂。

3:Docker 网络常用命令

(1):查看所有的 Docker 网络:docker network ls,会显示网络的 ID、名称、驱动类型和作用域。

(2):查看某个网络详情:docker network inspect 网络id / 网络名称

(3):创建docker网络命令:docker network create 网络名称。如:docker network create test_network,使用 docker network ls 查看 docker 网络:

(4):删除docker网络命令:docker network rm 网络id 或者 网络名称。如:docker network rm test_network 或者 docker network rm 1a2b3c4d

(5):将容器连接到 docker 网络:docker network connect my_network my_container,如 docker network connect my_network nacos,使用 docker network inspect my_network命令查看连接到 my_network 网络的容器:

(6):将容器从 docker 网络断开连接:docker network disconnect my_network my_container,如 docker network disconnect my_network nacos,使用 docker network inspect my_network命令查看连接到 my_network 网络的容器:

(7):删除没有被使用的 Docker 网络:docker network prune

以上为 Docker 网络基本知识,Docker 网络主要处理容器与容器之间的通信、容器与外部资源的通信,可以定义应用程序的网络边界。不同的 Docker 网络模式有不同的应用场景,在实际开发工作中,根据自己的实际业务场景选择合适的 Docker 网络模式。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号