Docker 概述以及整体架构

文章目录

  • 一、Docker概述
    • 1.1 什么是 Docker
    • 1.2 Docker 如何工作
    • 1.3 底层技术
  • 二、Docker架构
    • 2.1 Docker 整体架构
    • 2.2 Docker daemon
    • 2.3 Docker client
    • 2.4 Docker registries
    • 2.5 Docker objects
    • 2.6 Docker Desktop
  • 参考资料

一、Docker概述

1.1 什么是 Docker

Docker是一个用于开发、发布和运行应用程序的开放平台

Docker使您能够将应用程序与基础架构分开,以便快速交付软件。使用Docker,您可以以管理应用程序的相同方式管理基础架构。通过利用Docker的发布、测试和部署代码的方法,您可以显着减少编写代码和在生产中运行代码之间的延迟。

Docker提供了在称为容器的松散隔离环境中打包和运行应用程序的能力,并提供工具和平台来管理容器的生命周期。

1.2 Docker 如何工作

Docker帮助开发人员在任何地方 构建、共享 和 运行 应用程序,无需繁琐的环境配置或管理

正如 Docker: Accelerated Container Application Development 所言, Accelerate how you build, share, and run applications

其中,docler具体工作方式为:

  • Build : 快速启动新环境;与您现有的工具集成;容器化应用程序以实现一致性
  • Share:使用经过验证的可信内容构建;与您的团队合作,从Hub拉取和发布镜像; 保护您的工作空间;
  • Run: 一致的应用程序交付; 多功能性发展; 使用单个命令部署

1.3 底层技术

Docker 最初是基于 Linux 内核特性构建的。其中的关键特性包括 **命名空间(Namespace)**和控制组(cgroup),它们使得容器能够在隔离的环境中运行,有自己的文件系统、网络和进程空间。

The underlying technology

二、Docker架构

2.1 Docker 整体架构

Docker 使用客户端-服务器架构

这意味着有两个主要组件:Docker 客户端 和 Docker 守护进程(daemon)。架构细节如下:

  • Docker 客户端用于与用户交互和发送命令。而守护进程负责处理这些命令的执行,即负责构建、运行和分发 Docker 容器。

  • Docker 客户端和守护进程可以在同一系统上运行,也可以将 Docker 客户端连接到远程 Docker 守护进程。这种架构允许用户在本地或远程环境中管理 Docker 容器。

  • Docker 客户端与 Docker 守护进程( Docker daemon ) 使用 REST API、UNIX 套接字或网络接口进行通信。

  • 另一个 Docker 客户端是 Docker Compose,它允许您使用由一组容器组成的应用程序。Docker Compose 允许用户通过简化的配置文件定义和管理多容器应用。

在这里插入图片描述

2.2 Docker daemon

Docker daemon (dockerd)监听 Docker API 请求并管理 Docker 对象,包括镜像、容器、网络和卷。它是整个 Docker 引擎的核心组件。

Docker 守护进程可以与其他 Docker 守护进程通信,以协同管理 Docker 服务。这种分布式特性使得可以在多个主机上创建和管理 Docker 容器,并通过 Docker Swarm 或 Kubernetes 等工具进行集群管理。

总体而言,Docker 守护进程充当着 Docker 引擎的控制中心,负责协调和执行各种 Docker 操作,从而实现容器化应用的构建、部署和管理。

2.3 Docker client

Docker client (docker)是许多 Docker 用户与 Docker 交互的主要方式。当您使用诸如 docker run 等命令时,客户端将这些命令发送到 dockerd,由它来执行。docker 命令使用 Docker API。

Docker 客户端具备与多个 Docker 守护进程进行通信的能力。这种特性使得用户可以管理位于不同主机上的 Docker 守护进程,从而实现更为复杂的容器编排和集群管理。

2.4 Docker registries

Docker registries 是用于存储和管理Docker镜像的中央存储库。它允许用户共享和访问Docker镜像。

Docker Hub 是一个公共的、官方托管的 Docker 注册表。用户可以在 Docker Hub 上找到和分享各种Docker镜像。默认情况下,当用户未指定镜像来源时,Docker会从Docker Hub上检索镜像。

用户可以搭建自己的私有 Docker 注册表,用于存储和管理自定义的 Docker 镜像。这种私有注册表可以在内部网络中使用,提供更高的安全性和控制。

当您使用docker pulldocker run命令时,Docker 会从您配置的注册表中拉取所需的镜像。当您使用docker push命令时,Docker 会将您的镜像推送到配置的注册表中。通过这些命令,Docker 用户能够方便地管理镜像的获取和发布,无论是使用公共注册表还是自建私有注册表。

2.5 Docker objects

Docker objects 主要包括 镜像、容器、网络、卷、插件等对象

(1)镜像(Images)

Images是一个只读的模板,包含创建 Docker 容器的指令。您可以创建自己的镜像,也可以仅使用由其他人创建并发布在注册表中的镜像。要构建自己的镜像,您需要创建一个 Dockerfile,其中包含用于定义创建镜像和运行它所需步骤的简单语法。

镜像的性质主要有:

  • 只读性质: 镜像是只读的,一旦创建就不可更改。任何对容器的修改都是在镜像的基础上进行的,而不会影响原始镜像。

  • 基于其他镜像: 通常,镜像是基于其他镜像构建的,添加一些额外的定制。例如,您可以构建一个基于ubuntu镜像的镜像,但安装了Apache web服务器和您的应用程序,以及使您的应用程序运行所需的配置细节。

  • 分层结构: 镜像是由多个文件系统层(layers)组成的,每个层都包含了特定的文件和配置。Dockerfile 中的每个指令都会在镜像中创建一个层。当您更改Dockerfile并重新构建镜像时,只有更改的那些层会被重新构建。这是使镜像相对于其他虚拟化技术如此轻量、小巧和快速的一部分。

  • 标签(Tags): 镜像可以通过标签来标识和区分,标签通常表示版本、特定用途等信息。例如,ubuntu:20.04 表示了一个基于Ubuntu 20.04版本的镜像。

(2)容器(Containers)

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

镜像和容器之间的关系,类似于面向对象程序设计中的 类 和 对象

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

2.6 Docker Desktop

Docker Desktop 是一个一键安装的应用程序,适用于您的Mac、Linux或Windows环境,它允许您构建、分享和运行容器化的应用程序和微服务。

它提供了一个直观的GUI(图形用户界面),让您可以直接从您的计算机管理您的容器、应用程序和镜像。您可以将Docker Desktop作为独立工具使用,也可以作为CLI的补充工具使用。

参考资料

Docker overview | Docker Docs

Docker 架构 | 菜鸟教程 (runoob.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/280207.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

快来检测一下你是否真的学会了C语言,保证你看完后收获满满!!

文章目录 每日一言1234567891011121314151617181920结语 每日一言 人生而自由,却无往不在枷锁中。 --社会契约论 1 以下程序段的输出结果是? char s[]"\\141\141abc\t"; printf("%d\n",strlen(s));A. 9 B. 12 C. 13 D. 14 正确答…

程序的编译、链接

目录 前言: 前置知识回顾 宏 宏定义常量 宏定义语句 宏定义函数 条件编译 应用场景 编译过程概览 预编译阶段 编译阶段 汇编阶段 链接阶段 前言: 在ANSI C的任何一种实现中,存在两种不同的环境,第1种是翻译环境&#x…

go module本地包导入

go module本地包导入 本文目录 go module本地包导入启用go mod主项目工作目录本地module目录发布和使用模块 golang 1.11之后加入了go mod来替代GOPATH 官方文档参考:https://golang.google.cn/doc/tutorial/call-module-code 启用go mod 开启 Go modules # 临时开…

一文带你了解大模型的RAG(检索增强生成) | 概念理论介绍+ 代码实操(含源码)

针对大型语言模型效果不好的问题,之前人们主要关注大模型再训练、大模型微调、大模型的Prompt增强,但对于专有、快速更新的数据却并没有较好的解决方法,为此检索增强生成(RAG)的出现,弥合了LLM常识和专有数…

数据治理:释放数据价值的关键

随着数字化时代的到来,数据已成为组织和企业最重要的资产之一。然而,数据的快速增长和复杂性也给数据管理带来了巨大的挑战。为了确保数据的质量、安全性和合规性,数据治理已成为组织和企业必须面对的重要问题。数据治理是数据要素市场建设的…

自动驾驶学习笔记(二十三)——车辆控制模型

#Apollo开发者# 学习课程的传送门如下,当您也准备学习自动驾驶时,可以和我一同前往: 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo开放平台9.0专项技术公开课》免费报名—>传送门 文章目录 前言 运动学模型 动力学模型 总结…

Java进阶(第八期): Java中递归的的使用和递归解决一些算法问题 Java中的异常机制、异常的处理逻辑 自定义异常

文章目录 一、递归1.1 递归的介绍1.2 递归的简单练习1.3 图解递归执行流程:1.4 使用递归完成悲波那契数列1.5 猴子吃桃子问题 二、异常三 、异常的处理逻辑3.1 try catch 捕获异常3.2 throws抛出异常 四、自定义异常 Java进阶(第八期) 一、递…

如何安装、配置、启动及访问Nacos

准备 JDK 17.0:https://www.bilibili.com/video/BV1ig4y1k7Bq?p2 MySQL 8.0:https://www.bilibili.com/video/BV1QU4y117Vn Navicat Premium:https://www.bilibili.com/video/BV1F94y1A7nC 1、安装Nacos a、地址 网址:http…

ElasticSearch 架构设计

介绍 ElasticSearchMySQLIndexTableDocumentRowFieldColumnMappingSchemaQuery DSLSQLaggregationsgroup by,avg,sumcardinality去重 distinctreindex数据迁移 ElasticSearch 中的一个索引由一个或多个分片组成 每个分片包含多个 segment(分…

用 Node.js 写一个爬虫

自己设计一个网站,然后去爬取别人家页面的数据来做一个自己的网站。哈哈哈,如果自己写着玩可能没啥事,但如果用这个网站来获利,你可能就要被寄律师函了,毕竟这有点‘刑’。这篇文章呢,就带大家爬取豆瓣TOP2…

HDMI2.1输入转4Port MIPI/LVDS输出,嵌入式SPI闪存固件存储,VR和AR应用首选国产芯片方案-LT6911GXC

描述 LT6911GXC是一款高性能的HDMI2.1到MIPI或LVDS芯片,用于VR/显示应用。 HDCP RX作为HDCP中继器的上游,可配合其他芯片的HDCPTX实现中继器功能。 对于HDMI2.1输入,LT6911GXC可以配置为3/4通道。自适应均衡使其适合于长电缆应用,…

申请虚拟VISA卡Fomepay教程

fomepay 用下面的注册链接直达 https://gpt.fomepay.com/#/pages/login/index?dS21BA1 或者扫描下面图片的二维码直达注册 注册后尽量随用随充值不建议放大量现金在里面。

【论文解读】用于概念标定的逻辑强化大模型LEFT(NeurIPS 2023)

来源:投稿 作者:橡皮 编辑:学姐 论文链接:https://arxiv.org/abs/2310.16035 开源代码:https://github.com/joyhsu0504/LEFT 摘要: VisProg 和 ViperGPT 等最新研究成果巧妙地组成了视觉推理的基础模型-…

vscode配置python环境,步骤以及 chatgpt和csdn AI创作助手回答对比

1解决步骤 参考地址 解决步骤 vscode 安装 python插件,并重启vscode,前提是电脑已经配置了python环境,我的电脑已经安装了anaconda 也有python3 新建文件夹 pythonTst ,vscode中菜单栏 File --Add folder toWordSpace — 弹出框…

PNG免抠素材库,免费下载,可商用~

本期分享5个高质量PNG素材网站,让你在工作中大大提高效率,节省更多的时间,赶紧收藏起来吧~ 1、菜鸟图库 https://www.sucai999.com/searchlist/66008----all-0-1.html?vNTYxMjky 网站主要分享设计素材为主。像平面海报、免抠元素、背景图片…

常见推断方法一览:极大似然估计、最大后验估计、期望最大化、贝叶斯推断、马尔科夫链蒙特卡洛方法、变分推断

常见推断方法一览 推断方法区别频率派极大似然估计 MLE最大后验估计 MAP期望最大化 EM 贝叶斯推断 Bayesian马尔科夫链蒙特卡洛方法 MCMC变分推断 VI 推断方法区别 极大似然估计 (Maximum Likelihood Estimation, MLE): 解释: 假设你有一堆骰子,你投掷它们很多次&am…

行车记录仪变清晰,变高清的办法一定要收藏

有时候我们会发现行车记录仪拍摄的视频不够清晰,特别是出现事故需要视频为证的时候,如果视频太模糊,很难获得交警的支持,那么如何让行车记录仪拍摄的视频变得更加清晰呢? 小编给大家分享几个办法,建议收藏…

Getway介绍和使用

Getway 入门简介 网关搭建步骤: 创建项目,引入nacos服务发现和gateway依赖 配置application.yml,包括服务基本信息、nacos地址、路由 路由配置包括: 路由id:路由的唯一标示 路由目标(uri)…

openGauss学习笔记-180 openGauss 数据库运维-升级-升级前必读

文章目录 openGauss学习笔记-180 openGauss 数据库运维-升级-升级前必读180.1 升级方案180.2 升级前的版本要求180.3 升级影响和升级约束 openGauss学习笔记-180 openGauss 数据库运维-升级-升级前必读 180.1 升级方案 本节为指导用户选择升级方式。 用户根据openGauss提供的…

按摩上门预约小程序源码系统 开发组合:PHP+MySQL 附带完整的搭建教程

现代生活节奏的加快,人们越来越注重健康与放松。按摩作为传统的舒缓方式,市场需求逐年上升。然而,传统的按摩服务预约方式较为繁琐,用户需拨打热线电话或前往实体店进行预约,这无疑增加了用户的操作成本。因此&#xf…