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)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux专区】如何配置新服务器 | 添加普通用户到sudoers | 配置vim | git免账号密码pull push

💞💞欢迎来到 Claffic 的博客💞💞 👉 专栏:《Linux专区》👈 💬前言: 时隔131天,你的好友Claffic重新发文了!(✿◕‿◕✿) 上期已经带大家白嫖了阿…

【MATLAB】PSO粒子群优化LSTM(PSO_LSTM)的时间序列预测

有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 PSO粒子群优化LSTM(PSO-LSTM)是一种将粒子群优化算法(PSO)与长短期记忆神经网络(LSTM)相结合的混合模型。该算法通过…

设计模式之初始设计模式和UML图

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

SSH远程登陆服务器

截取自文章:SSH简介及两种远程登录的方法_ssh -CSDN博客 SSH的安装 SSH分为客户端 openssh-client 和服务器 openssh-server,可以利用以下命令确认电脑上是否安装了客户端和服务器。 dpkg -l | grep ssh 如果只是想远程登陆别的机器只需要安装客户端&…

web播放rtsp流视频,使用webrtc毫秒级延迟

目录 一、zlmediakit环境搭建和编译 1)、下载zlmediakit 2)、安装依赖 3)、编译webrtc 4)、启动zlmediakit 二、播放webrtc视频 1)、动态添加拉流代理 2)、播放视频 三、嵌入到自己的vue项目中。 1)、拷贝demo到自己的vue项目中 2)、mkcert生成证书 背景&#xff1…

shell shell脚本编写常用命令 语法 shell 脚本工具推荐

shell 脚本 计算机语言 Shebang 定义解释器 主要定义,您的脚本是用什么语言写的 #!/usr/bin/python //定义这是一个python语言#!/bin/bash //定义这是一个shell语言 echo SHELL我们执行的 linux 命令的时候,其实是使用 /bin/bash 这个二进制文…

鸿蒙应用开发 应用内字体大小调节

1 数据管理概述 在移动互联网蓬勃发展的今天,移动应用给我们生活带来了极大的便利,这些便利的本质在于数据的互联互通。因此在应用的开发中数据存储占据了非常重要的位置,HarmonyOS 应用开发也不例外。 本文将为您介绍 HarmonyOS 提供的数据…

stm32 HAL库 4096线ABZ编码器

[TOC]目录 ABZ编码器 4096线 买的是这个 AB相代表计数方向,Z代表过零点 cubemx配置 定时器Encoder 也可以选上DMA 中断 Z相GPIO中断 找一个空闲管脚 打开对应中断 代码 不用DMA int main(void) {short Enc_cnt 0;HAL_TIM_Encoder_Start_IT(&ht…

DrGraph原理示教 - OpenCV 4 功能 - 单通道图

通道 OpenCV的核心处理对象是Mat,大体是一个二维数组,加上了各种功能函数。 很多的图像处理,会在单通道或二值化的基础上进行,比如连通域、目标识别等。这里的通道就是channels。 不同的图像处理算法可能对通道数有特定的要求。例…

HTML5+CSS3+JS小实例:过年3D烟花秀

实例:过年3D烟花秀 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><…

#前后端分离# 头条发布系统

头条业务简介 用户功能 注册功能登录功能jwt实现 新闻 新闻的分页浏览通过标题关键字搜索新闻查看新闻详情新闻的修改和删除 预览界面 开源上线 https://gitcode.net/NVG_Haru/NodeJS_5161447 数据库设计 数据库脚本 CREATE DATABASE sm_db;USE sm_db;SET NAMES utf8mb4…

半导体行业-SECS/GEM协议 JAVA与SECS/GEM通信 什么是配方?springboot集成SECS通信协议 配方管理S7FX

Java与SECS基础通信 Java实现SECS指令S2F17获取时间 Java实现SECS指令 S10F3 终端单个显示例子 Java实现SECS指令 S7FX配方管理 Java实现SECS指令 S5F1报警/取消报警上传 实例源码及DEMO请查阅 JAVA开发SECS快速入门资料&#xff0c;SECS S7F19 什么是半导体配方&…

初识javaWeb

一、JavaWeb是什么&#xff1f; 1、概念 javaWeb指的是使用java语言进行互联网领域项目开发的技术栈——进行web项目开发所需的技术的集合。 -Web前端——在浏览器中用户可以看到的网页 -Web后端——为前端提供数据的程序 2、Web项目 java语言是可以进行多种类型的项目开发&a…

网大为卸任腾讯CXO;Midjourney 1 月训练视频模型;2023年马斯克赚了7700亿

投融资 • 2023 年大型科技公司在生成式 AI 初创企业上的投资远超风险投资集团• 恒信东方与无锡政府合作成立布局 MR/XR 技术及 3D 数字资产 AIGC 产业投资基金• 新公司法完善注册资本认缴登记制度• 网大为卸任腾讯CXO&#xff0c;曾促成南非MIH的投资• 宁波蔚孚科技完成数…

【VS】NETSDK1045 当前 .NET SDK 不支持将 .NET 6.0 设置为目标。

问题描述 报错 NETSDK1045 严重性代码说明项目文件行禁止显示状态错误NETSDK1045当前 .NET SDK 不支持将 .NET 6.0 设置为目标。请将 .NET 5.0 或更低版本设置为目标&#xff0c;或使用支持 .NET 6.0 的 .NET SDK 版本。RCSoftDrawMicrosoft.NET.TargetFrameworkInference.ta…

年度总结|存储随笔2023年度最受欢迎文章榜单TOP15-part2

TOP11&#xff1a;PCIe在狂飙&#xff0c;SAS存储之路还有多远&#xff1f; 随着科技的飞速发展&#xff0c;固态硬盘&#xff08;SSD&#xff09;已经成为现代计算机系统中不可或缺的一部分。它以其出色的性能和可靠性&#xff0c;改变了我们对于存储设备的期待。当前业内SSD广…

Java(算术,自增自减,赋值,关系,逻辑,三元)运算符,运算符的优先级,隐式转换,强制转换,字符串的+。

文章目录 1.运算符和表达式运算符&#xff1a;表达式&#xff1a; 2.算术运算符练习&#xff1a;数值拆分 3.隐式转换概念&#xff1a;简单记忆&#xff1a;两种提升规则&#xff1a;取值范围从小到大的关系&#xff1a; 4.隐式转换的练习案例一&#xff1a;案例二&#xff1a;…

Python中如何使用_new_实现单例模式

单例模式是一个经典设计模式&#xff0c;简要的说&#xff0c;一个类的单例模式就是它只能被实例化一次&#xff0c;实例变量在第一次实例化时就已经固定。 在Python中常见的单例模式有None&#xff0c;这就是一个很典型的设计&#xff0c;通常使用 if xxx is None或者if xxx …

【Linux Shell学习笔记】Linux Shell的位置参数与函数

一、位置参数 位置参数&#xff0c;也被称之为位置变量&#xff0c;通过位置参数&#xff0c;可以在执行程序的时候&#xff0c;向程序传递数据 1.1 shell接收参数的方法 1.2 向shell传递参数的方法 二、函数 2.1 函数基础 2.1.1 函数简介 函数本质上就是一个代码块&#xf…