Docker 那些事
  

Linux_Engineer 277

{{ttag.title}}
架构图

Docker守护程序
Docker守护进程(dockerd)侦听API请求并管理Docker 对象,如映像、容器、网络和卷。守护进程还可以 与其他守护进程通信以管理Docker服务。

Docker客户端
Docker客户端( 码头工人)是许多Docker用户交互的主要方式 和多克一起。当您使用以下命令时 码头装卸作业,客户端发送这些 命令到 码头工人,执行它们。该 码头工人命令使用 Docker API。Docker客户端可以与多个守护程序通信。

Docker桌面
Docker Desktop是一款易于安装的应用程序,适用于Mac、Windows或Linux环境,使您能够构建和共享容器化的应用程序和微服务。Docker桌面包括Docker守护程序(dockerd)、Docker客户端(docker)、Docker编写、Docker内容信任、Kubernetes和凭据帮助程序。有关详细信息,请参阅Docker桌面。

Docker registries
Docker 注册表存储Docker图像。Docker Hub是一个公共 注册表,任何人都可以使用,Docker配置为查找图像 默认为Docker Hub。您甚至可以运行自己的私人注册表。

使用 docker pull 或docker run命令时,所需映像为 从配置的注册表中提取。当您使用Docker push命令时, 你的镜像被推到你配置的注册表。

Docker objects
当您使用Docker时,您将创建和使用映像、容器、网络 卷、插件和其他对象。本节简要概述了一些 这些物体的形状。

Images
映像是一个只读模板,其中包含创建Docker的说明 image is a read-only template with instructions for creating a Docker 容器。通常,一个图像基于另一个图像,并具有一些附加的 based on another image, with some additional 定制化。例如,您可以构建一个基于ubuntu的映像 ubuntu 映像,但安装Apache Web服务器和应用程序,以及 运行应用程序所需的配置详细信息。

您可以创建自己的图像,也可以仅使用其他人创建的图像 并在注册表中公布。要构建自己的映像,请创建一个停靠文件 Dockerfile 使用简单的语法定义创建映像和运行所需的步骤 它。Dockerfile中的每个指令都会在图像中创建一个层。当你 更改Dockerfile并重建图像,仅那些具有 改变被重建。这就是为什么图像如此轻巧,小巧, 与其他虚拟化技术相比,速度更快。

containers
容器是映像的可运行实例。您可以创建、启动、停止 使用Docker API或CLI移动或删除容器。您可以连接 容器到一个或多个网络,将存储附加到容器,甚至创建新的 基于其当前状态的图像。

默认情况下,容器与其他容器相对隔离,并且 它主机。您可以控制容器的网络、存储 或其他底层子系统来自其他容器或来自主机 机器。

容器由其映像以及您 在创建或启动容器时提供给它。删除容器时,对容器的任何更改 其未存储在持久存储器中状态消失。

Docker 运行命令示例
下面的命令运行ubuntu容器,以交互方式附加到 本地命令行会话,并运行/bin/bash。

$ docker run -i -t ubuntu /bin/bash

运行此命令时,将发生以下情况(假设您使用 默认注册表配置):

如果本地没有ubuntu映像,Docker会从您的 配置注册表,就好像你手动运行了docker pull ubuntu一样。
Docker将创建一个新容器,就像您已经运行了Docker container create一样 命令。
Docker向容器分配一个读写文件系统,作为容器的最终文件系统 层。这允许正在运行的容器创建或修改文件和 本地文件系统中的目录。
Docker创建一个网络接口来将容器连接到默认容器 网络,因为您没有指定任何网络选项。这包括 向所述容器分配IP地址。默认情况下,容器可以 使用主机的网络连接连接到外部网络。
Docker启动容器并执行/bin/bash。因为集装箱 正在交互式运行并连接到您的终端(由于-i和-t 标志),则可以在将输出记录到的同时使用键盘提供输入 您的终端。
当您键入 exit终止/bin/bash命令时,容器 停止但不被移除。您可以重新启动它或将其删除。
一、Docker的网络
docker的网络一共有四种模式:Bridge、Host、container、None

Bridge:桥接模式 类似于 Vmware的Net模式

docker在启动时会创建命为docker0的网桥,docker0网桥就相当于一个虚拟的交换机,默认IP为172.17.0.0/16,此时所有启动容器(模式为Bridge)都会从docker0地址池里去分配一个IP,且默认网关为172.17.0.1,这样所有的容器相当于在一个二层的网络环境下。

Bridge是默认的网络模式,只要 docker run时 不加 -net,就是bridge模式。当运行-p参数时,docker实际是在iptables做了DNAT规则,实现端口转发功能。可以使用iptables -t nat -vnL查看。

示意图:


小记:什么是DNAT,目的地址转换也叫服务器端口转换/映射,当网络内部的服务需要被访问时,外部发起连接,到达防火墙或三层网络,此过程是由带公网ip的网关代替内部服务来接收外部的连接,然后在内部做地址转换。



Host:开放式网络模式

容器启动时,选择host模式,那么此容器将不会获得一个独立的Network namesoace

它会跟宿主机使用同一个网络命名空间,就意味着容器没有自己的网卡,使用的是宿主机的IP和端口

示意图:


Container模式

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

示意图:


None网络模式,类似于Vmware的主机模式

使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任

何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息,只有lo 网络接口。需要我们自己

为Docker容器添加网卡、配置IP等。

  不参与网络通信,运行于此类容器中的进程仅能访问本地回环接口;仅适用于进程无须网络通信的

场景中,例如:备份、进程诊断及各种离线任务等

示意图:


二:Docker的文件系统


三:镜像分层
四:资源隔离
docker本质就是宿主机的一个进程,docker是通过namespace实现资源隔离,通过cgroup实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g)

1)namespaces 名称空间


image

2)control Group 控制组cgroup的特点是:

cgroup的api以一个伪文件系统的实现方式,用户的程序可以通过文件系统实现cgroup的组件管理
cgroup的组件管理操作单元可以细粒度到线程级别,另外用户可以创建和销毁cgroup,从而实现资源的分配和再利用
所有资源管理的功能都以子系统的方式实现,接口统一子任务创建之初与其父任务处于同一个cgroup的控制组
四大功能:

资源限制:可以对任务使用的资源总额进行限制
优先级分配:通过分配的cpu时间片数量以及磁盘IO带宽大小,实际上相当于控制了任务运行优先级
资源统计:可以统计系统的资源使用量,如cpu时长,内存用量等
任务控制:cgroup可以对任务执行挂起、恢复等操作

76866641bef3c3604.png (10.81 KB, 下载次数: 18)

76866641bef3c3604.png

打赏鼓励作者,期待更多好文!

打赏
暂无人打赏

牛风喜 发表于 2024-5-20 09:21
  
每日一积累慢慢变专家
盘藤 发表于 2024-5-21 08:36
  
每日一积累,知识就是力量。
发表新帖
热门标签
全部标签>
每日一问
2024年技术争霸赛
干货满满
技术盲盒
技术笔记
产品连连看
GIF动图学习
信服课堂视频
秒懂零信任
新版本体验
标准化排查
2023技术争霸赛专题
通用技术
每周精选
安全攻防
答题自测
自助服务平台操作指引
安装部署配置
功能体验
每日一记
场景专题
在线直播
问题分析处理
运维工具
玩转零信任
技术晨报
文档捉虫活动
技术咨询
畅聊IT
专家问答
技术圆桌
MVP
网络基础知识
升级
上网策略
测试报告
日志审计
流量管理
云计算知识
用户认证
原创分享
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
深信服技术支持平台
社区帮助指南
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
齐鲁TV
华北区交付直播
北京区每日一练

本版达人

新手89785...

本周建议达人

YangZhe...

本周分享达人