一文了解Docker之网络模型

news/2024/11/15 1:32:59/

目录

1.Docker网络

1.1 Docker网络模型概述

1.2 Docker网络驱动程序

1.2.1 host模式

1.2.2 bridge模式

1.2.3 container模式

1.2.4 none模式

1.3 Docker网络命令示例

1.3.1 创建一个自定义网络

1.3.2 列出所有网络

1.3.3 连接容器到网络

1.3.4 断开容器与网络的连接

1.3.5 查看容器的网络信息


1.Docker网络

1.1 Docker网络模型概述

Docker是一种容器化平台,它提供了一种轻量级的虚拟化解决方案,使得应用程序能够以容器的形式运行。在Docker中,每个容器都有自己的网络栈,可以与其他容器或主机进行通信。Docker网络模型为容器提供了灵活的网络配置和连接选项。

Docker网络模型基于Linux内核的网络命名空间和虚拟以太网桥技术。每个Docker容器都有自己的网络命名空间,这意味着每个容器都有自己的网络接口、IP地址和路由表。Docker还提供了一些网络驱动程序,用于实现容器之间的通信和与外部网络的连接。

Docker网络模型是一个三层的网络模型,它允许容器之间的通信,并提供了多种网络驱动程序供用户选择。Docker网络模型的核心组件包括:

  1. Docker网络:Docker网络是一组容器的虚拟网络,它允许容器之间进行通信。每个Docker网络都有自己的IP地址范围和子网掩码。

  2. Docker网桥:Docker网桥是一个虚拟交换机,它连接了Docker网络和物理网络,并负责容器之间的通信。

  3. 容器网络接口(CNI):CNI是一个插件接口,用于配置容器的网络。它定义了一组标准接口和一套配置规范,使得不同的网络驱动程序可以无缝切换。

1.2 Docker网络驱动程序

Docker提供了多种网络驱动程序,用于实现不同的网络连接方式。以下是一些常用的网络驱动程序:

1.2.1 host模式

host驱动程序将容器与主机网络共享,容器将直接使用主机的网络栈和IP地址。这意味着容器可以通过主机的IP地址与外部网络进行通信,但容器之间无法直接通信。使用host模式的容器可以直接使用宿主机的IP地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,host最大的优势就是网络性能比较好,但是docker host上已经使用的端口就不能再用了,网络的隔离性不好。

使用host驱动程序创建一个容器网络,只需运行以下命令:

$ docker run --name mycontainer --network host nginx

1.2.2 bridge模式

bridge驱动程序是Docker默认的网络驱动程序。它基于Linux内核的bridge技术,创建一个虚拟的以太网桥,用于连接容器和主机网络。每个容器都会分配一个独立的IP地址,并通过桥接方式与其他容器通信。bridge模式是docker的默认网络模式,不写--net参数,就是bridge模式。

Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器都会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。

docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair设备,Docker将veth pair设备的一端放在新创建的容器中,并命名为eth0(容器的网卡),另一端放在主机中,以vethxxx这样类似的名字命名,并将这个网络设备加入到docker0网桥中。如下图:

 从上图中我们可以看到,可以看到容器内部和Linux主机都会创建一个新的网卡,而这两个网卡都是成对的。使用的技术就是evth-pair。evth-pair 就是一对的虚拟设备接口,他们是成对出现的,一段连着协议,一段彼此相连。evth-pair充当一个桥梁,连接各种虚拟网络设备。

Docker容器完成bridge网络配置的过程如下:
 1. 在主机上创建一对虚拟网卡veth pair设备。veth设备总是成对出现的,它们组成了一个数据的通道,数据从一个设备进入,就会从另一个设备出来。因此,veth设备常用来连接两个网络设备。
 2. Docker将veth pair设备的一端放在新创建的容器中,并命名为eth0。另一端放在主机中,以veth这样类似的名字命名,并将这个网络设备加入到docker0网桥中。
 3. 从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。一般在docker中docker0的IP地址就相当于localhost。

使用bridge驱动程序创建一个容器网络非常简单,只需运行以下命令:

$ docker run --name mycontainer --network bridge nginx

1.2.3 container模式

 这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace (网络命名空间),而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。

1.2.4 none模式

 使用none模式,Docker 容器拥有自己的Network Namespace ,但是,并不为Docker 容器进行任何网络配置。也就是说,这个Docker 容器没有网卡、IP、路由等信息。这种网络模式下容器只有lo回环网络,没有其他网卡。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。

1.3 Docker网络命令示例

1.3.1 创建一个自定义网络

$ docker network create mynetwork

1.3.2 列出所有网络

$ docker network ls

1.3.3 连接容器到网络

$ docker network connect mynetwork mycontainer

1.3.4 断开容器与网络的连接

$ docker network disconnect mynetwork mycontainer

1.3.5 查看容器的网络信息

$ docker network inspect mynetwork

 至此本篇文章结束。


http://www.ppmy.cn/news/714780.html

相关文章

2022 基于SpringBoot的API文档管理系统 接口文档管理系统

2022 基于SpringBoot的API文档管理系统 预览地址:http://apisystem.liuyanzhao.com 详细介绍地址:2022 基于SpringBoot的API文档管理系统 接口文档管理系统 | 言曌博客 代码地址:GitHub - saysky/ApiSystem: SpringBoot的API文档管理系统 …

JavaWeb企业在线文档管理系统

扫码学习 本项目使用JSP、Servlet技术进行开发,项目主要是完成一个企业在文档管理的功能,不同的员工登录后会显示不同的菜单,操作的权限会根据用户属于的角色取出所有的权限,普通用户可以增加文档,部门经理对本部门的…

易度文档管理系统功能特性之预览

近年来,互联网上各种视频分享、图片分享、文档分享网站越来越多,为用户提供了良好的内容阅读体验,在线预览已经变成用户固有使用习惯。而各大企业使用文档管理系统也开始需要在线预览这个需求。 易度文档管理系统为企业搭建的是一个各类数字资…

在线文件管理系统,仿百度云、有道云

日常开发或工作中,总会遇到各种各样的文件图片,长期放在电脑上,有时候换电脑文件就丢失了,或者太懒不分类就会出现找不着的情况。如果将这些资料放在云盘上当然可以解决这些问题,但是对于私密资料、内部资料&#xff0…

文档管理系统解决方案

在所有研究机构及已通过或正努力通过ISO9001标准的单位中,一般存在大量的工程与技术文档,人工管理及检索这些文档工作量非常大,极大地影响了工作效率;同时由于某些文件通常存在多个版本,如何保证工作人员手中文件版本的一致性是文档管理中经常要遇到的问题。 为了解决上述…

计算机文档管理系统,标准文档管理系统

功能介绍 一、概述: 标准文档管理系统充分贯彻ISO质量体系的管理思想,利用先进的计算机软件技术,有效地控制各文档的产生、管理文档的存取访问、控制文档的分发、监控文档的流转过程。 文档管理系统的功能具体包括:文件类别、文件…

企业电子文档管理系统哪个好

目前市面上文档管理系统千千万万,常让人眼花缭乱,难以抉择,作为公司一名小小的团队负责人,今天就来简单分享一下我在选择文档管理系统时的大体思路,我将从基本功能、工具软件三个个方面来进行阐述。 一、选择标准 对…

基于SpringBoot的在线文档管理系统

文末获取源码 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏…