Docker | Docker技术基础梳理(五) - Docker网络管理

简介: Docker | Docker技术基础梳理(五) - Docker网络管理

为什么需要容器的网络管理?

容器的网络默认与宿主机、与其他容器相互隔离,且容器中可以运行一些网络应用,比如nginx、web应用、数据库等,如果需要让外部也可以访问这些容器中运行的网络应用,那么就需要配置网络来实现。

同样的,不同需求下,容器与宿主机的通信有不同的业务状态这时候就需要容器网络管理以达成管理不同业务下相关的网络配置。

Docker中的网络驱动模式有那些?

bridge network(网桥)模式:默认的网络模式,类似虚拟机的nat模式

host network(主机)模式:容器与宿主机之间的网络无隔离,即容器直接使用宿主机网络

none network模式:容器禁用所有网络

overlay network(覆盖)模式:利用vxlan实现的bridge模式

macvlan network模式:容器具备MAC地址,使其在外部看来是一台真实的网络设备

Docker网络管理命令浅析

查看网络(docker network ls)

命令格式: docker network ls [参数]

常用参数:

-q 只显示网络对象的ID

注意: docker安装之后,会自动创建bridge、host、none三种网络驱动。

创建网络(docker network create)

命令格式:docker network create [参数] 网络

常用参数:

-d 指定网络的驱动,不指定默认为bridge
-- subnet 指定子网网段(192.168.0.0/16)
-- ip-range 指定容器的IP范围
-- gateway 子网的网关

注意:

  • 创建网络部分参数,涉及到网络工程师相关的知识,这里不做详细介绍有需要可以参考「计算机网络」这本书,内有详解。
  • host、none模式的网络只能存在一个,再次创建会报错。
  • overlay网络创建依赖于docker swarm(集群负载均衡)服务
网络删除(docker network rm)

删除一个或多个网络

命令格式:docker network rm 网络[网络..]

查看网络详细信息(docker network inspect)

命令格式:

docker network inspect [参数] 网络

docker inspect [参数] 网络

常用参数:

-f 根据format输出结果


使用网络(docker run)

命令格式:docker run/create --network 网络

注意:默认情况下,docker创建或启动容器时,会默认使用名为bridge的网络

网络连接与断开(docker network connect /disconnect)

命令格式:

docker network connect/disconnect [参数] 网络 容器

常用参数:

-f 强制断开连接

Docker网络模式简介

bridge网络模式
  1. bridge网络模式的特点:
  • 宿主机上需要单独的bridge网卡,如默认docker默认创建的docker0。
  • 容器之间、容器与主机之间的网络通信,是借助为每一个容器生成的一对veth pair虚拟网络设备对,进行通信的。一个在容器上,另一个在宿主机上。(这是网桥)
  • 每创建一个基于bridge网络的容器,都会自动在宿主机上创建一个veth**虚拟网络设备。
    外部无法直接访问容器。需要建立端口映射才能访问。(可以理解为网卡)
  • 容器借由veth虚拟设备通过如docker0这种bridge网络设备进行通信。
  • 每一容器具有单独的IP
  • bridge网络模式下宿主机与容器服务使用的端口可以重复

bridge原理示意图

  1. bridge网络模式下的端口映射
    根据上面关于bridge的特点我们可以知道访问bridge网络模式的设备,需要端口映射。

端口映射的命令格式:docker run/create -P/-p

命令参数:

-P 将容器内部所有暴露端口进行随机映射
-p 手动指定端口映射 (-p [宿主机IP] : [宿主机端口] : 容器端口)

关于-p参数的举例:

-p ::80 将容器的80端口随机映射到宿主机的随机IP上
-p :8000:6379 将容器的6379端口映射到宿主机的任意IP的8000端口上
host网络模式

host网络模式的特点:

  • 容器完全共享宿主机的网络,网络没有隔离。宿主机的网络就是容器的网络。
  • 容器、主机上的应用所使用的端口不能重复。
  • 外部可以直接访问容器,不需要端口映射
  • 容器IP就是宿主机的IP

host网络模式示意图

除了普通的host网络模式外,同样还有特殊版本的host网络模式(container网络模式)。

container网络模式的特点:

其实就是容器共享其他容器的网络,相当于该容器,在网络层面上,将其他容器作为“主机”。它们之间的网络没有隔离。

container网络模式

container网络模式的使用:

docker run/create --network container:容器

none、overlay与macvlan网络模式

none网络模式的特点:

  • 容器上没有网络,也无需任何网络设备
  • 如果需要使用网络,需要用户自行安装与配置

overlay网络模式的特点:

  • overlay网络模式实现方案有很多种,在Docker自身集成了一种,基于VXLAN隧道技术实现
  • overlay网络主要用于实现跨主机容器之间的通信

macvlan网络模式的特点:

  • macvlan的主要特点就是通信直接基于mac地址进行转发
  • 在macvlan中宿主机担任的角色是一台二层交换机,docker会维护一张mac地址表,当宿主机收到数据包时,直接根据mac地址找到对应的容器
  • 而在容器内部互相通信的时候,容器直接使用IP互通,所以每个容器对于外面的网络都是一台真实的网络设备

总结

这次文章主要复习了docker的网络管理的内容,其中host,bridge,container是主要的复习内容,且在三种网络模式中建议优先选用host网络模式,其使用性能最优。

相关文章
|
7月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
1088 108
|
5月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
523 2
|
5月前
|
机器学习/深度学习 人工智能 监控
上海拔俗AI软件定制:让技术真正为你所用,拔俗网络这样做
在上海,企业正通过AI软件定制破解通用化难题。该模式以业务场景为核心,量身打造智能解决方案,涵盖场景化模型开发、模块化架构设计与数据闭环优化三大技术维度,推动技术与业务深度融合,助力企业实现高效、可持续的数字化转型。
198 0
|
6月前
|
监控 前端开发 安全
Netty 高性能网络编程框架技术详解与实践指南
本文档全面介绍 Netty 高性能网络编程框架的核心概念、架构设计和实践应用。作为 Java 领域最优秀的 NIO 框架之一,Netty 提供了异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。本文将深入探讨其 Reactor 模型、ChannelPipeline、编解码器、内存管理等核心机制,帮助开发者构建高性能的网络应用系统。
441 0
|
9月前
|
Docker 容器
Docker网关冲突导致容器启动网络异常解决方案
当执行`docker-compose up`命令时,服务器网络可能因Docker创建新网桥导致IP段冲突而中断。原因是Docker默认的docker0网卡(172.17.0.1/16)与宿主机网络地址段重叠,引发路由异常。解决方法为修改docker0地址段,通过配置`/etc/docker/daemon.json`调整为非冲突段(如192.168.200.1/24),并重启服务。同时,在`docker-compose.yml`中指定网络模式为`bridge`,最后通过检查docker0地址、网络接口列表及测试容器启动验证修复效果。
1498 39
|
8月前
|
监控 算法 安全
基于 C# 基数树算法的网络屏幕监控敏感词检测技术研究
随着数字化办公和网络交互迅猛发展,网络屏幕监控成为信息安全的关键。基数树(Trie Tree)凭借高效的字符串处理能力,在敏感词检测中表现出色。结合C#语言,可构建高时效、高准确率的敏感词识别模块,提升网络安全防护能力。
211 2
|
7月前
|
Kubernetes Cloud Native 持续交付
Docker:轻量级容器化技术解析
Docker:轻量级容器化技术解析
|
7月前
|
运维 测试技术 Docker
Docker:轻量级容器化技术革命
Docker:轻量级容器化技术革命
|
10月前
|
机器学习/深度学习 算法 PyTorch
Perforated Backpropagation:神经网络优化的创新技术及PyTorch使用指南
深度学习近年来在多个领域取得了显著进展,但其核心组件——人工神经元和反向传播算法自提出以来鲜有根本性突破。穿孔反向传播(Perforated Backpropagation)技术通过引入“树突”机制,模仿生物神经元的计算能力,实现了对传统神经元的增强。该技术利用基于协方差的损失函数训练树突节点,使其能够识别神经元分类中的异常模式,从而提升整体网络性能。实验表明,该方法不仅可提高模型精度(如BERT模型准确率提升3%-17%),还能实现高效模型压缩(参数减少44%而无性能损失)。这一革新为深度学习的基础构建模块带来了新的可能性,尤其适用于边缘设备和大规模模型优化场景。
424 16
Perforated Backpropagation:神经网络优化的创新技术及PyTorch使用指南
|
10月前
|
调度 Python
探索Python高级并发与网络编程技术。
可以看出,Python的高级并发和网络编程极具挑战,却也饱含乐趣。探索这些技术,你将会发现:它们好比是Python世界的海洋,有穿越风暴的波涛,也有寂静深海的奇妙。开始旅途,探索无尽可能吧!
251 15