【Docker系列四】Docker 网络

欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
    • 常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • Docker 网络模式
      • 1. Bridge 模式(默认模式)
      • 2. Host 模式
      • 3. None 模式
      • 4. Overlay 模式
      • 5. Macvlan 模式
    • 自定义网络配置
      • 1. 创建自定义网络
      • 2. 连接容器到自定义网络
      • 3. 查看网络信息
    • 容器间通信
      • 1. 通过 IP 地址通信
      • 2. 通过容器名称通信
      • 3. 通过链接(Link)通信
    • 网络端口映射
      • 1. 单端口映射
      • 2. 多端口映射
      • 3. 随机端口映射
    • 总结

Docker 网络模式

Docker 提供了多种网络模式,用于管理容器之间的通信以及容器与外部网络的连接。不同的网络模式适用于不同的应用场景,以下是 Docker 支持的几种主要网络模式:
【Docker系列四】Docker 网络_第1张图片

1. Bridge 模式(默认模式)

Bridge 模式是 Docker 的默认网络模式。在这种模式下,Docker 会创建一个虚拟的网桥(通常命名为docker0),所有使用 Bridge 模式的容器都会连接到这个网桥上。容器通过网桥进行通信,并且可以通过端口映射与外部网络通信。

  • 特点:

    • 容器之间可以通过 IP 地址相互通信。
    • 容器可以通过端口映射与宿主机和外部网络通信。
    • 适用于单主机上的容器通信。
  • 使用场景:

    • 单主机上的多容器应用。
    • 需要与外部网络通信的容器。

2. Host 模式

在 Host 模式下,容器直接使用宿主机的网络栈,不再进行网络隔离。容器与宿主机共享 IP 地址和端口。

  • 特点:

    • 容器与宿主机共享网络命名空间。
    • 容器可以直接使用宿主机的 IP 地址和端口。
    • 网络性能较好,因为没有额外的网络隔离。
  • 使用场景:

    • 对网络性能要求较高的应用。
    • 需要直接使用宿主机网络的容器。

3. None 模式

在 None 模式下,容器没有网络接口,完全隔离于网络。容器只能通过其他方式(如共享卷)与外部通信。

  • 特点:

    • 容器没有网络连接。
    • 适用于不需要网络通信的容器。
  • 使用场景:

    • 安全性要求极高的应用。
    • 不需要网络通信的批处理任务。

4. Overlay 模式

Overlay 模式用于跨主机的容器通信。它通过创建一个覆盖网络(Overlay Network),使得不同主机上的容器可以像在同一个网络中一样通信。

  • 特点:

    • 支持跨主机的容器通信。
    • 适用于分布式应用和多主机环境。
  • 使用场景:

    • 跨主机的容器集群。
    • 分布式应用,如微服务架构。

5. Macvlan 模式

Macvlan 模式允许容器直接使用物理网络的 MAC 地址,使得容器看起来像是物理网络中的一台独立设备。

  • 特点:

    • 容器直接连接到物理网络。
    • 容器拥有独立的 MAC 地址和 IP 地址。
  • 使用场景:

    • 需要容器直接接入物理网络的场景。
    • 对网络性能要求较高的应用。

自定义网络配置

Docker 允许用户创建自定义网络,以满足特定的网络需求。自定义网络可以提供更好的隔离性、灵活性和可管理性。

1. 创建自定义网络

要创建一个自定义网络,可以使用docker network create命令。例如,创建一个名为my-network的 Bridge 网络:

docker network create --driver bridge my-network

在这个例子中,--driver选项指定了网络驱动(如bridgeoverlay等),my-network是网络的名称。

2. 连接容器到自定义网络

创建自定义网络后,可以将容器连接到这个网络。例如,启动一个容器并将其连接到my-network网络:

docker run -d --name my-container --network my-network nginx

在这个例子中,--network选项指定了容器连接的网络。

3. 查看网络信息

可以使用docker network inspect命令查看网络的详细信息,包括连接的容器、IP 地址分配等:

docker network inspect my-network

容器间通信

在 Docker 中,容器之间的通信可以通过以下几种方式实现:

1. 通过 IP 地址通信

在 Bridge 模式下,每个容器都会被分配一个 IP 地址,容器之间可以通过 IP 地址进行通信。例如,容器 A 可以通过容器 B 的 IP 地址访问容器 B 的服务。

2. 通过容器名称通信

Docker 提供了内置的 DNS 解析功能,容器之间可以通过容器名称进行通信。例如,如果容器 A 和容器 B 都连接到同一个自定义网络,容器 A 可以通过容器 B 的名称(如my-container)访问容器 B 的服务。

3. 通过链接(Link)通信

Docker 支持通过--link选项将容器链接在一起。例如,启动容器 A 并链接到容器 B:

docker run -d --name container-a --link container-b nginx

在容器 A 中,可以通过container-b的主机名访问容器 B 的服务。不过,--link选项已经逐渐被自定义网络和 DNS 解析取代。

网络端口映射

Docker 容器可以通过端口映射与外部网络通信。端口映射将容器内的端口映射到宿主机的端口,使得外部网络可以通过宿主机的 IP 地址和端口访问容器内的服务。

1. 单端口映射

要将容器内的端口映射到宿主机的端口,可以使用-p选项。例如,将容器内的 80 端口映射到宿主机的 8080 端口:

docker run -d --name my-nginx -p 8080:80 nginx

在这个例子中,外部网络可以通过http://<宿主机IP>:8080访问容器内的 Nginx 服务。

2. 多端口映射

如果需要映射多个端口,可以多次使用-p选项。例如,将容器内的 80 端口和 443 端口分别映射到宿主机的 8080 端口和 8443 端口:

docker run -d --name my-nginx -p 8080:80 -p 8443:443 nginx

3. 随机端口映射

如果不需要指定宿主机的端口,可以使用-P选项,Docker 会自动选择一个宿主机端口进行映射。例如:

docker run -d --name my-nginx -P nginx

可以使用docker ps命令查看容器的端口映射情况。

总结

Docker 网络是 Docker 技术的重要组成部分,它通过多种网络模式和自定义网络配置,为容器提供了灵活、高效的网络通信能力。通过 Bridge 模式、Host 模式、None 模式、Overlay 模式和 Macvlan 模式,Docker 可以满足不同场景下的网络需求。自定义网络配置和容器间通信机制使得容器之间的通信更加便捷和安全。网络端口映射则使得容器可以与外部网络进行通信,提供了灵活的服务暴露方式。掌握 Docker 网络的相关知识和操作,对于构建和管理复杂的容器化应用至关重要。

觉得有用的话点个赞 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!

如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!

Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!

img

你可能感兴趣的:(s4,Docker系列,docker,网络,容器)