docker是干什么的

news2024/11/25 2:55:49

很多朋友刚接触docker,不知道docker做什么, 这里白眉大叔给大家普及一下 docker的知识以及docker和虚拟机的区别。

你可以这样认为,docker 就是 打包应用程序的工具。 怎么理解这个工具呢

1-如何理解docker 这个打包工具?

我们都用过Window 系统安装程序,我们一眼看到 exe结尾的文件,就知道它是一个应用程序,双击后就可以安装在系统里,对吧。

在计算机编程技术中,我们有不同的编程语言,有的朋友使用java,或者C++,或者 javascript, nodejs, OC,Python,等等, 然后每个编程语言写完程序后要想要运行起来,就要打成一个包, 我们可以理解为 软件包。

这样就构成了五花八门了, 有的是给了一个 jar包,有的是一个war包,有的是一个文件夹,有的是给你源程序,让你自己去编译。

所以,这个应用构建部分,不同的语言,构建的方式不同, 导致各种包,也挺麻烦的, 那么有没有一种方式,类似win 的exe,不管你写的什么,只要双击就能运行。

答案是肯定的。

我们会使用docker build 把我们的软件或者应用程序 打成一个标准格式的包, 这个包我们称它为镜像。

这样就解决了统一标准的问题。

2-docker应用商店

其实不能叫商店,应该成为 应用分享, 我们知道在手机上下载程序都要去 应用市场下载对吧, 如果是放到以前,我们可能要去各种应用程序的官方网站去下载, 有了 docker后,我们的应用构建称统一标准后的镜像,就可以放到一个 商店里,类似 安卓的apk 应用商店,都是apk文件。 我们可以把自己所有打包好的镜像放到一个地方,比如 docker 官方提供的公共仓库,docker hub.

因为某种原因,这个网站对国内目前访问不了,具体怎么访问呢,你知道就行了。

我们都打成了一个统一标准的格式-----镜像,

我们直接 docker run 就可以起来了。

如果放到以前,我们需要 java -jar , python ..py 等等每一个都不一样。有了docker后,直接 docker run 就OK了。

所以docker 的出现 ,开启了一个时代

这句话毫不夸张的。

市场上也有容器运维工程师,这些都很普遍了。

3-什么是容器化时代呢?

白眉大叔是这样理解的:

区别于容器化,我们以前有一个技术 叫虚拟化技术。 举个例子:

我现在有一个机器,这个机器配置很高,比如128G内存,32核,这台机器里边要跑很多应用。 以前如果我们把所有应用都放下一个机器里边,可能某一个应用(比如 一个内存泄漏)把128G 内存全部用完了,其他应用就挤不下了, 为了安全起见,我们要把每个应用进行隔离,

那么怎么隔离?

我们首选想到的事,开虚拟机, 一个应用程序占一个虚拟机, 每个虚拟机给它配置8g 内存,这样就算某个应用程序内存泄漏,影响的只是当前的虚拟机,其他虚拟机不影响的。 这样的隔离不是容器化,而是虚拟化。

这种隔离是通过装虚拟机的方式来解决, 但是虚拟机有很多缺点

(1) 比如 每个虚拟机的镜像,都很大,一般都是上G 起步的。比如,我们在Window上 用VM 装一个centos 系统,每个镜像都比较大,创建使用也比较复杂,有的商用的企业版软件,创建虚拟机很快,速度快,但是过程也比较复杂的。 这是缺点, 优点呢就是 隔离性强。

在虚拟机里跑程序 不会把别人的程序跑炸。

(2)虚拟机的缺点还有一个,就是启动慢, 我们启动虚拟机有的可能要好几分钟。

(3)在虚拟机中我们分享应用也不方便

比如,我们现在换了环境,之前是 centos 系统,现在换成了 Ubuntu,或者windows, 假如这是个java程序。

我们是不是需要配置JAVA_HOME 等等一大堆东西,把整套环境这个虚拟机镜像全部迁移过去,光把这个镜像抽取过来,可能又得一大会。所以虚拟化技术稍微有点重量级。

那接下来怎么办呢?有没有轻量级的呢?

docker 公司呢推出了一种技术:容器化技术。

当然这个容器化就是linux 做的, 只不是docker 做了一个简单的封装。

容器化就非常简单, 它摒弃了虚拟机的笨重设计, 怎么理解呢?

我们举一个简答的例子,比如封装操作系统。

在虚拟化技术中每一个虚拟机其实都是一个完整的操作系统,但是docker 封装镜像的时候 只封装了应用程序必备的一些东西,类似操作系统的本身自带的,它都没有封装进去,就搞了一个差异化的的环境。我比你操作系统多了什么,我就增加什么,你操作系统有的我就不增加了。它封装的镜像是M级的,有的 linux镜像只有5M。

为什么只有5M 呢,因为其他的都已经在跑镜像的机器上有了,我不要再重复造轮子了。

所以docker 容器化后 镜像只有M级别,非常小

还有就是它的创建也非常简单,直接一条命令

docker build 就完成了

它的隔离性也是非常好的。 以前我们是跑在虚拟机上, 现在我们是跑在容器上, 容器就像小盒子,而这个小盒子就是这个软件完整的运行环境。我们的应用程序就跑在这个小盒子里边,哪怕它炸了,也不影响其他的镜像。

所以这个类似沙箱。

这样呢我们的整个应用程序运行起来也是非常的安全,隔离性也强,而且启动速度是秒级的(容器的启动可要比虚拟机的启动要快太多了)。另外docker 镜像的移植分享也很方便,直接从 仓库中拉下镜像来就能跑

还有一个非常好的优点:就是资源的隔离性,这里呢资源隔离不只是 CPU,内存,等还有磁盘,访问设备,网络,等等,都可以进行隔离。

用户与用户组之间的隔离也可以的, 比如,root用户容器里的跟宿主机上的root用户是不一样的。 这样我们不用担心权限的问题, 比如黑客入侵了容器,顶多就是在沙箱里边。 不会跑到我们外部的宿主机上的。 所以docker的整个隔离性非常的高, 这给我们应用上云带来很高的安全性。

好,了解了以上的docker 概念 ,接下来我们就进入docker的实战环节,这样即使对docker小白的朋友,也能顺着这个逻辑快速的先跟白眉大叔玩起来。

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

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

相关文章

作为一个初学者,该如何入门大模型?

在生成式 AI 盛行的当下,你是否被这种技术所折服,例如输入一段简简单单的文字,转眼之间,一幅精美的图片,又或者是文笔流畅的文字就展现在你的面前。 相信很多人有这种想法,认为生成式 AI 深不可测&#xf…

选择适合你的办公桌:提高工作效率的关键

​在如今的数字时代,越来越多的人将办公桌移到家里或办公室。但是,如何选择适合你的办公桌可能是个挑战。不同的工作需要和工作空间大小会影响你的选择。下面是一些简单的建议,帮助你找到适合你的办公桌,提高工作效率。 首先&…

世微 平均电流型降压恒流驱动器 电动摩托车LED灯小钢炮驱动IC AP5218

1,来源:深圳市世微半导体有限公司 2,产品描述 AP5218 是一款 PWM工作模式, 高效率、外 围简单、内置功率管,适用于5V~100V输入的高 精度降压 LED 恒流驱动芯片。输出最大功率可达 15W,最大电流 1.5A。AP5…

Leetcode—2512.奖励最顶尖的K名学生【中等】

2023每日刷题&#xff08;十九&#xff09; Leetcode—2512.奖励最顶尖的K名学生 哈希表stringstream排序算法思想 实现代码 class Solution { public:vector<int> topStudents(vector<string>& positive_feedback, vector<string>& negative_feed…

MySQL中如何书写update避免锁表

1. 什么是MySQL锁表&#xff1f; MySQL锁表是指在对某个数据表进行读写操作时&#xff0c;为了保证数据的一致性和完整性&#xff0c;系统会对该数据表进行锁定&#xff0c;防止其他用户对该表进行操作。 2. 为什么会出现锁表&#xff1f; 当多个用户同时对同一个数据表进行…

(附源码)基于springboot校园自媒体信息服务平台-计算机毕设 84565

springboot校园自媒体信息服务平台 目 录 摘要 1 绪论 1.1课题意义 1.2开发现状 1.3系统开发技术的特色 1.4springboot框架介绍 1.5论文结构与章节安排 2 2校园自媒体信息服务平台系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.3.2数据修改流程 2…

一文搞定 Linux 中 Python 环境/版本管理

Python 的环境/版本管理实在是依托答辩&#xff0c;感觉不如 Node.js。 尤其是在 Linux 环境下&#xff0c;多数发行版的系统组件、工具依赖自带的 Python&#xff0c;折腾系统自带的 Python 环境时&#xff0c;一个搞不好就会把整个系统干掉。 同时&#xff0c;研究安全的小伙…

前端使用firebase配置第三方登录介绍(谷歌登录,facebook登录等)

参考文档 点此处去 firebase 官网点此处去 web端的谷歌登录文档 实现 首先注册一个账号登录firebase&#xff08;可以使用谷歌账号登录&#xff09; 然后创建项目&#xff08;走默认配置就行了&#xff09; 添加应用&#xff08;走默认配置&#xff09;&#xff0c;如图所…

SpringBoot-SpringTask定时任务

文章目录 Spring Task 介绍cron 表达式Spring Task 入门案例 Spring Task 介绍 Spring Task 是 Spring 框架提供的任务调度工具&#xff0c;可以按照约定的时间自动执行某个代码逻辑。 作用&#xff1a;定时自动执行某段 Java 代码 应用场景&#xff1a; 信用卡每月还款提醒…

【java学习—十二】文件字节流(2)

文章目录 1. 文件字节输入流2. 文件字节输出流3. 练习 1. 文件字节输入流 举例&#xff1a; tt1.txt文件内容为&#xff1a;aaaa package day12;import java.io.FileInputStream;public class Test1 {public static void main(String[] args) {Test1.testFileInputStream();}…

【Vue3+Vite+bwip-js库】 生成DataMatrix码

前提条件 已存在的vue3vite架构前端项目对二维码分类有一定的了解 生成的码的样式如下&#xff08;DataMatrix&#xff09; 该二维码容量如下 详情见&#xff1a;DataMatrix介绍 Vue3Vite 导入 bwip-js生成DataMatrix 1. 安装 npm install bwip-js --save2. 引入使用 <…

「视频编码软件」Media Encoder(Me) 2024 Mac/win中文版下载安装

Adobe Media Encoder(Me) 2024是一款专业的视频编码工具&#xff0c;它可以将各种视频格式进行转换、压缩和编码&#xff0c;以满足不同媒体平台和设备的需求。 以下是 Media Encoder 2023 的主要功能和新增功能&#xff1a; 视频编码和转换&#xff1a;支持将各种视频格式进…

代码随想录算法训练营第四十三天丨 动态规划part06

518.零钱兑换II 思路 这是一道典型的背包问题&#xff0c;一看到钱币数量不限&#xff0c;就知道这是一个完全背包。 对完全背包还不了解的同学&#xff0c;可以看这篇&#xff1a;动态规划&#xff1a;关于完全背包&#xff0c;你该了解这些&#xff01;(opens new window)…

苹果IOS系统webglcontextlost问题-解决方案

问题描述 在IOS手机 解码视频流的时候&#xff0c;第一次可以正常播放&#xff0c;但只要IOS手机熄屏&#xff0c;再重新唤醒&#xff0c;就会一直播放失败&#xff0c;无论换哪个浏览器都不行。安卓手机则一切正常。 经过排查&#xff0c;发现 IOS手机 的浏览器会无故 webGL…

大聪明教你学Java | Win10 环境下安装部署 RocketMQ

前言 &#x1f34a;作者简介&#xff1a; 不肯过江东丶&#xff0c;一个来自二线城市的程序员&#xff0c;致力于用“猥琐”办法解决繁琐问题&#xff0c;让复杂的问题变得通俗易懂。 &#x1f34a;支持作者&#xff1a; 点赞&#x1f44d;、关注&#x1f496;、留言&#x1f4…

Word里MathType插件符号表消失了

场景再现 在word里面编辑数学公式&#xff0c;结果符号表跑到屏幕外面了&#xff0c;找不到&#xff1b; 解决办法 在其中找到视图->工具栏&#xff0c;点击即可&#xff1a; 还嫌弃它跑到外边了&#xff0c;那就可以点击符号表的边框&#xff1a; 双击左边边框&#x…

YOLO目标检测——夜间车辆检测数据集【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;智能交通监控系统、自动驾驶系统、夜间行车安全辅助系统等数据集说明&#xff1a;夜间车辆检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富标签说明&#xff1a;使用lableimg标注软件标注&#xff0c;标注框质量高&#xff0…

如何进行性能测试?

性能测试是软件测试中的一个重要环节&#xff0c;其目的是评估系统在不同负荷下的性能表现&#xff0c;包括响应时间、吞吐量、并发数等指标。通常可以通过以下几种方法进行性能测试&#xff1a; 1、负载测试 负载测试是模拟多用户同时访问系统&#xff0c;测试系统在高并发、…

云产品FC免费试用获取奖励步骤

文章目录 1、获取活动链接2、报名参加3、试用产品领取产品试用权限部署生成小说提交作品 4、提交任务获取奖励 1、获取活动链接 活动时间2023.11.1&#xff5e;2023.11.30 名额有限&#xff0c;先到先得 进群群主获取活动链接 2、报名参加 直接点击链接进入小程序进行登录授…

备份doris数据到minio

1、MINIO 设置 创建服务账户&#xff0c;记住ACCESS_KEY和SECRET_KEY 创建Buckets doris 设置region 在首页查看服务ip和端口号 2、创建S3备份库 因为minio是兼容S3协议的&#xff0c;所以可以通过s3协议链接minio。 CREATE REPOSITORY minio WITH S3 ON LOCATION "s3://…