【Docker】Docker简介_运行原理

1、简介

1.1基本概念

  • 容器:容器是Docker的基本部署单元。它是一个轻量级的、独立的运行时环境,包含应用程序及其相关依赖。容器利用Linux内核的命名空间和控制组技术,实现了隔离性和资源管理,使得应用程序在不同的容器中运行不会相互影响。
  • 镜像:镜像是用于创建容器的模板。它包含了一个完整的文件系统,其中包括应用程序运行所需的所有文件、依赖和配置信息。镜像是不可变的,通过Docker镜像可以创建多个相同的容器实例。
  • 仓库:仓库是用于存储和分发Docker镜像的地方。最常用的公共镜像仓库是Docker Hub,上面有大量的官方和社区共享的镜像。此外,还可以搭建私有的镜像仓库,用于存放自己的镜像

1.2用途

  1. 提升开发效率:Docker可以快速搭建开发环境,节省大量时间。通过Docker,开发者可以轻易地让多个服务在有限的内存环境中运行。
  2. 构建环境:对于需要构建源码的场景,Docker可以提供一个预配置好的环境,省去了逐一安装软件的繁琐过程。
  3. 微服务:Docker支持微服务架构,可以将每个服务打包为一个Docker镜像并使用docker-compose来模拟生产环境。
  4. 自动测试:Docker可以与自动化测试紧密集成,通过镜像快速部署测试环境,提高测试效率。
  5. 部署过程:Docker镜像可以实现自我部署,降低硬件要求和应用环境之间的耦合度。
  6. 持续部署:Docker天生适合持续集成/持续部署,可以简化部署流程,加速应用发布。

1.3组成部分

  • DockerClient客户端:用于与Docker守护进程通信,提供用户与Docker的交互界面。
  • Docker Daemon守护进程:在宿主机上运行,接收来自DockerClient的请求,并管理Docker对象(如镜像、容器等)。
  • Docker Image镜像:如上所述,是创建容器的模板。
  • Docker Container容器:如上所述,是Docker的基本部署单元。

1.4Docker 架构

  • Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
  • Docker 容器通过 Docker 镜像来创建。
  • 容器与镜像的关系类似于面向对象编程中的对象与类。
Docker面向对象
容器 对象
镜像

2、运行原理

2.1Docker的运行流程

  1. 安装与配置:首先,用户需要在宿主机上安装Docker软件,并进行必要的配置,如设置Docker仓库源、安装Docker软件包等。
  2. 获取镜像:用户可以通过Docker Hub或其他Docker仓库获取所需的镜像。这些镜像可以是官方提供的,也可以是用户自己创建的。
  3. 创建容器:使用docker run命令,基于指定的镜像创建一个新的容器实例。Docker会加载镜像中的文件系统,并为容器分配所需的资源(如CPU、内存、网络等)。
  4. 运行容器:容器创建后,Docker会启动容器中的进程,并运行应用程序。容器与宿主机之间通过命名空间(Namespace)和控制组(Cgroup)技术实现隔离,确保容器内的进程不会干扰到宿主机或其他容器的运行。
  5. 管理容器:用户可以使用Docker命令(如docker startdocker stopdocker restart等)来管理容器的运行状态。同时,Docker还提供了丰富的API接口,允许用户通过编程方式管理容器。

2.2核心组件

  1. Docker Client:Docker客户端是用户与Docker守护进程通信的桥梁。用户通过Docker客户端发送请求给Docker守护进程,后者负责执行相应的操作。
  2. Docker Daemon(守护进程):Docker守护进程是Docker架构中的主体部分,它负责接收Docker客户端的请求,并管理Docker对象(如镜像、容器等)。Docker守护进程提供了Docker Server的功能,使其能够接受来自客户端的请求。
  3. Docker Engine:Docker引擎是Docker的核心组件之一,它包含了Docker守护进程、客户端工具(docker命令)和REST API。Docker引擎负责执行Docker内部的一系列工作,如创建容器、运行应用程序等。
  4. Docker Registry:Docker仓库是存储和分发Docker镜像的地方。用户可以从Docker仓库中下载所需的镜像,也可以将自己的镜像推送到仓库中供其他人使用。

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

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

相关文章

ITREX大语言模型量化-优化工具

一、定义 定义demo 案例 二、实现 定义 ITREX 是Intel 提出的量化加速工具,https://github.com/intel/intel-extension-for-transformers 本实验基于英特尔大模型优化加速技术对大模型预测进行加速,常见的优化优化技术包括:量化&#xff08…

C++并发之协程实例(三)(co_await)

目录 1 协程2 实例3 运行 1 协程 协程(Coroutines)是一个可以挂起执行以便稍后恢复的函数。协程是无堆栈的:它们通过返回到调用方来暂停执行,并且恢复执行所需的数据与堆栈分开存储。这允许异步执行的顺序代码(例如,在没有显式回调…

前端面试题日常练-day81 【面试题】

题目 希望这些选择题能够帮助您进行前端面试的准备,答案在文末 在Sass中,以下哪个功能用于创建一个颜色列表? a) extend b) for c) import d) color Sass中的父选择器(Parent Selector)是通过以下哪个符号表示的&…

【Oracle】实验一 安装和使用Oracle数据库

【实验目的】 掌握Oracle软件安装过程,选择安装组件掌握建立Oracle数据库,配置网络连接使用SQL*Plus,登录到实例和数据库掌握命令方式的关闭和启动实例及数据库 【实验内容】 安装Oracle19c,记录安装过程。切记:创建…

自然语言处理学习路线(1)——NLP的基本流程

NLP基本流程 【NLP基本流程】 0. 获取语料 ——> 1. 语料预处理 ——> 2. 特征工程&选择 ——> 3. 模型训练 ——> 4. 模型输出&上线 【NLP基本流程图】 Reference 1. 自然语言处理(NLP)的一般处理流程!-腾讯云开发者社区-腾讯云 2. …

js函数声明与函数表达式的区别

在JavaScript中,函数可以通过函数声明和函数表达式两种方式进行定义。 函数声明是通过关键字function和函数名来定义的,例如: function add(a, b) {return a b; }函数表达式是将函数赋值给一个变量或者存储在一个对象的属性中,…

数组初了解

一.引入 现在,有一个场景需求,我们需要将10个数字存入,也就是10个变量。但如果场景需求改变,是用户输入了10个数,让我们求里面的最大值。那10个变量就显得过于臃肿。 我们需要一个新的数据结构,来装一系列…

贪心推公式——AcWing 125. 耍杂技的牛

贪心推公式 定义 贪心算法是一种在每一步选择中都采取在当前状态下最优的选择,希望通过局部的最优选择来得到全局最优解的算法策略。 运用情况 问题具有最优子结构,即一个问题的最优解包含其子问题的最优解。可以通过局部最优决策逐步推导到全局最优…

stm32学习笔记---GPIO输入(理论部分)

目录 GPIO输入模式下的硬件和电路 按键原理 传感器原理 什么是上下拉电阻? 运算放大器当做比较器 按键的硬件电路 传感器的硬件电路 STM32用到的C语言知识 STM32中的C语言数据类型 C语言中的宏定义 typedef和define的区别是什么? C语言的枚举…

计算机基础之:硬件系统的性能评估标准

服务器时钟的性能通常涉及多个方面,主要包括准确性、稳定性、以及对系统性能的影响。以下是一些关键指标和衡量方法: 准确性: 时间偏移:测量服务器时钟与一个可靠时间源(如GPS时间、原子钟或NTP服务器)之间…

Python itertools模块

itertools 是 Python 标准库中的一个模块,它提供了许多用于操作迭代对象的工具函数。这些函数可以高效地生成迭代器,用于处理序列和集合,特别适用于循环和组合数学。以下是 itertools 模块中一些常用函数的概述: 一、无限迭代器 i…

如何理解广角镜头和长焦镜头的区别。

为什么广角镜头的视野会比长焦镜头的视野大呢? 我之前用等光程解释了景深,也解释了为什么焦距越远,成像越大,但是从来没有提到过视野范围这个概念。实际上在我之前建立的数学模型中,物曲面S是无限大的,像曲…

保护您的机密:Foxit Reader PDF文件加密与解密全攻略

保护您的机密:Foxit Reader PDF文件加密与解密全攻略 引言 在数字化时代,保护敏感信息的安全比以往任何时候都更为重要。PDF文件作为一种流行的文档格式,广泛用于存储和交换数据。Foxit Reader不仅提供了阅读PDF的功能,还具备强…

掌握Emacs Verilog Mode:高效硬件开发指南

掌握Emacs Verilog Mode:高效硬件开发指南 引言 在硬件开发领域,Emacs Verilog Mode是一个强大的工具,它为Verilog硬件描述语言提供了专业的编辑支持。通过与Emacs的其他模式和工具集成,Verilog Mode不仅增强了代码编辑的效率&a…

管综 之 逻辑

1.复言命题 1.1假言推理 1.命题模型识别:当题干中出现如果那么,只有才,当且仅当等典型关联词时此题考的是简单假言推理问题 2.三步解题法:1️⃣:画箭头 2️⃣:递否 3️⃣:找答案 口诀: [口诀1]充分条件前推后 [口诀2]逆否命题等价于原命题 […

一加全机型TWRP合集/橙狐recovery下载-20240603更新-支持一加12/Ace3V手机

TWRP是目前安卓平台的刷机神器,可快速刷写第三方ROM或官方系统,刷入TWRP之前需要解锁BL,目前已适配一加多个机型。ROM乐园小编20240603整理,涵盖一加1到一加Ace3V多机型专用TWRP文件,个人机型橙狐recovery适配相对完整…

systemd在程序被kill -9时的动作

现象 今天在测试程序的时候发现,使用kill -9杀死程序之后,程序的资源回收动作依旧被执行了。 分析 执行 kill -9 abc,然后立即再执行ps -ef | grep abc,发现此时多了一个父进程为1的进程,正在执行abc service中定义…

自制HTML5游戏《贪吃蛇》

一、游戏简介 贪吃蛇是一款经典的电子游戏,最早在1976年由Gremlin公司推出,名为"Blockade"。游戏的玩法简单却富有挑战性,玩家控制一条蛇在封闭的场地内移动,通过吃食物增长身体,同时避免撞到自己的身体或场…

第3章 小功能大用处-Bitmaps、HyperLogLog、GEO

1.Bitmaps 1.1数据结构模型 现代计算机用二进制(位)作为信息的基础单位,1个字节等于8位,例 如“big”字符串是由3个字节组成,但实际在计算机存储时将其用二进制表 示,“big”分别对应的ASCII码分别是98、10…

22.智能指针(下)

标题 五、引用计数智能指针5.1 共享引用计数智能指针共享数据5.2 使用Box定义三个共享链表5.3 使用Rc代替Box5.4 引用计数增加实验 六、RefCell和内部可变性模式6.1 通过RefCell在运行时检查借用规则6.2 内部可变性:不可变值的可变借用1)内部可变性的用例…