【docker】了解什么是Docker

news2024/11/15 13:55:14

一、前言

   最近,在学习如何部署项目的时候,老是出错误,然后朋友推荐了去学一下docker,然后自己就去学了【尚硅谷】的关于docker的教程视频,学完之后,感觉docker真的强,可以把我们做好的app的进行跨平台、快速的运行、构建以及分享出去。学会了docker在掌握一项新的容器虚拟化技术的同时又方便了我们项目的一次分装,跨平台运行。所以我准备将自己学习的内容以博客的形式记录,方便后期的学习与回顾,当然大家也在小破站可以去看【尚硅谷】相应的视频讲解!

二、什么是Docker

这里借用docker官网(Docker: Accelerated Container Application Development)的一句话来解释:Docker就是用来加速我们应用的构建、分享以及运行的容器虚拟化技术!

PS:现在的docker官网已经不能直接访问了,作为一个IT人员,要懂得自己施加一些“魔法”哦

三、Docker的工作原理

这里就借用【尚硅谷】视频里的一个插图来记录一下Docker的工作原理。

在这幅图中,有Client、Docker Host、Registry(应用市场)这三个部分,其中Docker Host(Docker 主机)表示我们的一台机器下载了我们的Docker那么这台机器就是我们的Docker主机,Docker的后台进程Daemon就会一直运行为我们服务;而Client表示一个命令行程序,可以通过命令(docker pull 、docker run等)来操作我们的Daemon;而Registry(应用市场)是Docker自己的应用市场,里面有很多的应用软件,这些应用软件被称为镜像。

Docker_hub应用市场:

1、如何Run

如上图所示,以运行redis为例,我们现在Client端执行docker pull redis命令(步骤①),此时我们的Daemon就回去应用市场找到我们的redis镜像(步骤②),将redis镜像下载到本机(步骤③),Client再执行docker run redis命令(步骤④),此时我们的Daemon就会找本地的redis镜像,如果找不到它也会自动下载(步骤⑤),找到这个镜像后就会启动它(步骤⑥),此时这个redis镜像就被启动了,我们把它叫做容器,当然我们可以启动多个容器!这就是我们如何Run的一个过程!

2、如何Build

如上图所示,我们有个构建好的软件OpenJDK,我们首先在Client端执行docker build xxx(软件名称)(步骤①),Daemon就会帮我们制造一个镜像(步骤②),然后就会生成一个OpenJDK镜像(步骤③),再在Client端执行docker push xxx(软件名称)(步骤④),此时Daemon就会将我们的OpenJDK镜像推送到我们的应用市场(步骤⑤),当OpenJDK镜像在应用市场时,其他人也就可以下载和访问我们的镜像了。

3、如何Share

其实,当我们讲解了Run、Build后,Share我们的软件,只需要熟悉docker pull xxx、docker push xxx,懂得如何在应用市场推送和下拉我们的镜像即可!

四、Docker容器化的特点

在上面的Docker的原理图中,我们会有两个比较新的词,分别是镜像容器,至于镜像其实就是软件包,将我们的软件打成了包,至于容器的话,大家可能比较陌生,为什么会有容器化这种思想呢?

1、背景

要回答这个问题,首先我们要从虚拟机(Virtual Machine,简称VM)的发展说起,VM将一台物理设备虚拟为多个逻辑设备,每个逻辑设备可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高设备的工作效率。这表明我们在虚拟化部署的时候,每部署一个虚拟机就需要配一个操作系统,才能运行应用,如果此时我们用户只是做一些简单的操作话,采用VM技术本身比较负载而且会造成资源的浪费,迁移应用程序的话,也需要迁移整个VM。所以此时急需一种轻量级的能实现应用程序之间相互独立运行的虚拟化技术!

2、Docker容器

基于以上的背景,我们的容器虚拟化技术就孕育而生,它同时兼顾了我们的轻量级隔离环境的存在,它之所以能这样是因为,它不像VM采用操作系统级的资源隔离,容器采用的是进程级的系统隔离。

它具体有以下特点:

①容器属于轻量级的VM、

②容器共享操作系统内核、

③容器拥有自己的文件系统、CPU、内存、进程空间等

④容器互相隔离

⑤容器安全可靠、高密度、跨平台等

五、总结

   总的来说,这篇博客的内容只是让大家对Docker概念和原理有个基本的认识,关于Docker指令的实际操作会在后面的博客中继续记录的,大家感兴趣的可以持续关注哦~

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

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

相关文章

vue3+ts项目引入vue-codemirror实现yaml代码编辑器

重要提示 重新安装依赖后一定要重启项目!!! 网上搜到的案例拿过来都报错?那应该是插件的版本不一样,先弄清版本!!! 本示例相关版本如下 npm i vue-codemirror6 // 按自己所需的…

QT学习之计算器

网格布局初尝试,快速构建计算器 项目结构: wident.h拖动建立界面,20个button,一个lineedit 布局好后整体网格布局调整,依次给每个案件输入文本,并改objectname方便后期辨识 为了在lineedit显示数字&…

鸿蒙轻内核M核源码分析系列十二 事件Event

往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 轻内核M核源码分析系列一 数据结构-双向循环链表 轻内核M核源码分析系列二 数据结构-任务就绪队列 鸿蒙轻内核M核源码分析系列三 数据结构-任务排序链表 轻…

电子PCB板老化测试指南

部署到现场的成品 PCBA 应通过多项测试,以确保可靠性和稳定运行。行业标准规定了多种测试方法、性能要求、评估指标,甚至必须使用测试夹具来评估电气行为、耐热循环性、长期热稳定性、承受热冲击的能力等等。 PCB老化测试的目的 PCB 老化测试的目的是收…

【STM32】CAN总线基础入门

CAN总线基础入门 一、CAN简介二、主流通信协议对比三、CAN物理层1、CAN硬件电路2、CAN电平标准3、CAN收发器 – TJA1050(高速CAN)4、CAN物理层特性 四、帧格式1、CAN总线帧格式2、数据帧3、数据帧各部分用途简介4、数据帧的发展历…

详解TensorRT的C++高性能部署以及C++部署Yolo实践

详解TensorRT的C高性能部署 一. ONNX1. ONNX的定位2. ONNX模型格式3. ONNX代码使用实例 二、TensorRT1 引言 三、C部署Yolo模型实例 一. ONNX 1. ONNX的定位 ONNX是一种中间文件格式,用于解决部署的硬件与不同的训练框架特定的模型格式的兼容性问题。 ONNX本身其…

未来已来:揭秘GPT-Next如何重塑人工智能的未来

GPT-Next:性能的百倍提升 在当今这个科技日新月异的时代,人工智能(AI)无疑是最具活力和变革性的领域之一。最近,OpenAI在KDDI峰会上宣布了一项激动人心的消息:他们即将推出名为“GPT-Next”的新一代语言模…

SpringCloud之Sleuth(Micrometer)+ZipKin分布式链路追踪

(学习笔记) 1、分布式链路追踪概述 问题:在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路&#xf…

电脑桌面一键整理,高效整理,让你的电脑桌面焕然一新!

电脑桌面整理是一个能够提高工作效率、增强安全性、简化资产管理、改善用户体验的电脑软件。无论是图标管理还是文件整理,通过专业的电脑桌面整理软件都能轻松搞定,有序的管理文件、应用程序。 下面是关于Windows桌面工具的介绍与说明! 一、…

恒创科技:最小化服务器存储容量的技巧

最小化服务器存储容量的需求通常来自于希望降低硬件成本、节省能源以及提高系统性能的考虑。以下是一些实现这一目标的技巧: 1.评估您的存储需求 在开始优化服务器存储之前,您需要清楚了解实际需要和使用的空间大小。您可以使用磁盘使用情况分析器或 Tre…

day15-Linux的优化_linux15个优化

① UID 当前用户uid信息 [rootoldboy59 ~]# id uid0(root) gid0(root) groups0(root) \\UID 当前用户uid信息※② PATH 存放的是命令的位置/路径 [rootoldboy59 ~]# echo $PATH \\用$符号识别环境变量 /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bi…

自然语言处理系列六十一》分布式深度学习实战》TensorFlow深度学习框架

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列六十一分布式深度学习实战》TensorFlow深度学习…

JWT生成、解析token

目录 1. 导入JWT相关依赖2. JWT生成token3. JWT解析token4. 测试结果5. JWT加密、解密工具类 1. 导入JWT相关依赖 <!-- jwt认证模块--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><versio…

Linux 一个简单的中断信号实现

1.查看手册&#xff0c;学习中断处理图 流程&#xff1a;&#xff08;次级源->开关&#xff09;到 源挂起 到 开关 到 处理优先级 到 中断挂起标志 到 CPSR里面的开关&#xff08;图中未展现&#xff09; 最后cpu处理 此次我们先使用k1按键实现中断&#xff0c;即是eint8 …

requestIdleCallback和requestAnimationFrame有什么区别?

由react fiber引起的关注 组件树转为链表&#xff0c;可分段渲染渲染时可以暂停&#xff0c;去执行其他高优先级任务&#xff0c;空闲时在继续渲染&#xff08;JS是单线程的&#xff0c;JS执行的时候没法去DOM渲染&#xff09;如何判断空闲&#xff1f;requestIdleCallback 区…

想入门网络安全却不知道怎么入手,看这一篇就够了!

先聊聊&#xff0c;学习网络安全方向会遇到哪些问题&#xff1f; 打基础的时间长 学基础花费了很长的时间&#xff0c;光学语言都有好几门&#xff0c;有的人会止步于学习linux系统及命令的路上&#xff0c;更多的人会停在学习语言上面&#xff1b; 知识点掌握的不够清楚 对…

ML18_EM算法

1. 参数在贝叶斯网络中指的什么 2. 随机变量在贝叶斯网络中指的什么 在贝叶斯网络中&#xff0c;“随机变量”指的是网络中的节点&#xff0c;这些节点代表不确定事件或属性&#xff0c;它们可以取不同的值&#xff0c;并且这些值的概率分布通常未知或部分未知。随机变量可以表…

手搓LLM大模型:从零开始构建大语言模型

在人工智能的世界里&#xff0c;大型语言模型&#xff08;LLMs&#xff09;无疑是最引人注目的明星之一。这些深度神经网络模型的出现&#xff0c;为自然语言处理&#xff08;NLP&#xff09;领域带来了前所未有的变革。那么&#xff0c;这些模型究竟是如何工作的&#xff1f;它…

2024最新推荐10款英文免费录屏软件,想要录制电脑屏幕的你快看过来

你是否曾想过&#xff0c;只需几个简单的步骤&#xff0c;就能将你的电脑屏幕变成一个生动的视频故事&#xff1f;无论是展示你的游戏技巧&#xff0c;还是创建教育视频&#xff0c;录屏软件都能助你一臂之力。但面对市场上琳琅满目的录屏工具&#xff0c;选择一个合适的可能是…

【卡码网C++基础课 19.洗盘子】

目录 题目描述与分析一、栈二、栈的操作三、代码编写 题目描述与分析 题目描述&#xff1a; 在餐厅里&#xff0c;洗盘子的工作需要使用到栈这种数据结构。 假设你手里有一个盘子堆放区。现在需要模拟洗盘子的过程&#xff0c;每个盘子都有一个编号。 盘子堆放区操作说明&…