Docker(一):什么是Docker?

article/2025/9/21 10:14:42

为什么会出现Docker

假设你在开发一个项目,你所用的电脑是具备了项目特定配置的开发环境。但其他开发人员的设备以及开发环境配置都各有不同。你所在开发的应用需要依赖你当前的配置,而当你需要发布到测试环境的时候,你需要把你本地的环境配置,在测试环境也配置一遍。那如果有灰度环境呢,又或者说发布到生产环境呢?那你又是如何保证这些环境配置,每次都能够顺利完成部署,而不是重复捣腾,并且在部署过程不出现令人头疼的版本问题,配置问题,还有就是常说的 ”明明我本地是可以的,为什么发布上去就这么多问题?”

综上所述,使用容器化技术可以得以解决。容器化技术解决了运行环境和配置问题,方便做持续集成并有助于整体发布的容器虚拟化技术。

什么是Docker

Docker是基于Linux内核实现的,在Linux容器技术的基础上发展过来的(因此我们安装Docker要基于虚拟机上运行,Windows系统要安装Hyper-V 虚拟机特性)。将应用打包成镜像,通过镜像成为运行在Docker容器上的实例,而Docker容器在任何操作系统上都是一致的,这就实现了跨平台,跨服务器。只需要配置好一个环境,其他服务器上就可以一键部署,从而提升了部署效率,简化了操作。

Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使得用户的应用及运行环境可以做到"一个镜像,随时随地构建、发布和运行"。

Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案----> "系统平滑移值,容器虚拟化技术"。

容器VS虚拟机比较

虚拟机是带环境安装的一种解决方案,它可以在操作系统里面运行另一个操作系统,例如在windows系统里面运行Linux系统。应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对底层系统来说,虚拟机就是一个普通文件,不需要就删了,对其他部分毫无影响。传统虚拟机技术基于安装在主操作系统上的虚拟机管理系统(如:vmware等),创建虚拟机(虚拟出各种硬件),在虚拟机上安装从操作系统,再从操作系统中安装部署各种应用。(虚拟机的缺点:1、资源占用多;2、冗余步骤多;3、启动慢)

由于虚拟机存在某些缺点,Linux发展出了另一种虚拟化技术:Linux容器(Linux Containers,缩写为 LXC)。Linux容器是与系统其它部分分隔开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试再到生产的整个过程中,它都具有可移植性和一致性。Linux容器不是模拟一个完整的操作系统而是对进程进行了隔离,有了容器就可以将应用允许所需要的资源打包到一个隔离容器中。容器与虚拟机不同,容器不需要捆绑一整套操作系统,只需要软件工作所需的资源和配置,系统因此变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行。

Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面实现虚拟化。与传统的虚拟机相比,Docker优势体现为启动速度快,占用体积小。

比较了 Docker 和传统虚拟化方式的不同之处:

 1、传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程。

2、容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

3、每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。

Docker官网 :Docker: Accelerated, Containerized Application Development


http://chatgpt.dhexx.cn/article/52n8h8bM.shtml

相关文章

【Docker】docker到底是个啥,底层原理

一、总览 Docker说到底其实就是一个启动了多个Linux NameSpace的应用进程,而这个进程能够使用的资源量,则受Cgroups配置的限制。 其中NameSpace技术,通过对新创建的进程等重命名,缩小了操作系统视图,实现了看似隔离的…

什么是 Docker?它能用来做什么?

文章目录 什么是云计算?什么是 Docker?虚拟化技术演变特点架构镜像(Image)仓库(Registry )容器(Container) 应用场景 什么是云计算? 云计算是一种资源的服务模式&#x…

docker(1):什么是 Docker

1. 什么是docker Docker是一个开源项目,诞生于2013年初,最初是dotCloud公司内部的一个业余项目。它基于Google公司推出的Go语言实现。项目后来加入了Linux基金会,遵从了Apache2.0协议,项目代码在GitHub(https://github.com/docke…

Docker的使用 (1.什么是docker)

前言 这个系列是我自己学习使用docker的记录和分享,作为一名开发人员,你需要了解这个东西并且学会它的简单使用,但是作为一名开发而不是运维,不要花过多的时间去深究它的原理,而是把它当作一个工具即可 docker Docke…

6.docker是什么?什么是容器?镜像是什么?层又是什么?

一、docker 什么是docker,解决了什么问题? Docker解决了运行环境不一致所带来的问题,Docker会将配置文件进行统一管理;解决耗内存问题,Docker会一开始就为每个程序指定内存分配;让快速扩展,弹…

【Docker】

文章目录 一、准备二、Docker的安装第一步:直接开启一个虚拟机,登录进去后,使用ip a命令查看ip地址,查看到当前虚拟机ip地址是192.168.11.10然后用Xshell 7连接该虚拟机,连接地址填刚才的虚拟机ip地址;第二…

Docker镜像里到底有啥东西?

Docker 容器的本质是一个特殊的进程,而 Docker 镜像则是容器运行所需的文件系统。可以说Docker容器是Docker镜像的实例,镜像是容器的模板。容器是在镜像的基础上运行的,当我们修改原镜像时,并不会对正在运行的容器产生影响。 那么…

通俗的解释什么是Docker,一文搞懂

一、初识Docker 1.1.什么是Docker 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署,环境不一定一…

【Docker】Docker最近这么火,它到底是什么

前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 📕作者简介:热…

【Docker】什么是Docker,它用来干什么

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖&#x1f…

Docker是什么?Docker可以做什么?

背景 随着云原生、容器化、微服务、k8s 等技术的发展,容器 Docker 也火了一把,同时也逐渐被软件开发者在实践中进行运用。个人在目前接手的项目、参与的项目或技术交流中,发现 Docker 已经非常普及。 对于大多数开发者来说,Docker…

Lucas定理理解与应用

【定义】 Lucas定理是用来求 C(n,m) mod p的值。条件:n和m是非负整数,p是素数 一般用于:n和m但p很小,或者n,m不大但大于p,这样用阶乘解决不了。 【公式】 表达式:C(n,m)%pC(n/p,m/p)*C(n%p,m…

ACM_算法_Lucas定理

Lucas定理是用于求解C(n,m)%p的问题 这里小编用一张图&#xff1a; 这张图就很完整的说明了Lucas定理的内容&#xff0c;比较简单&#xff0c;也比较好理解&#xff0c;小编也就不多说了。 #include <cstdio> #include <cstring> #include <iostream> #incl…

Lucas卢卡斯定理模板

题目算法要素&#xff1a;组合数学&线性求逆元&线性求阶乘的逆元&Lucas定理 题面&#xff1a; Lucas定理内容&#xff1a;不会的走传送门去oiwiki 分析&#xff1a; 由于这题n、m较大&#xff0c;因此直接硬算肯定会炸&#xff08;阶乘都算不完&#xff09;。 故…

Vue脚手架global安装出错

1.安装npm sudo apt-get install npm npm -v 查看npm版本 node -v 查看node版本 2.sudo npm install --global vue-cli发现报错出现 TypeError:this is not a typed array 原因是node版本过低导致的&#xff0c;解决办法&#xff1a; 1&#xff09;sudo npm install -g n 2)…

MySQL高级篇1

第01章 Linux下MySQL的安装与使用 1. 安装前说明 1.1 查看是否安装过MySQL 如果你是用rpm安装, 检查一下RPM PACKAGE&#xff1a; rpm -qa | grep -i mysql # -i 忽略大小写检查mysql service&#xff1a; systemctl status mysqld.service1.2 MySQL的卸载 1. 关闭 mysql…

VScode 环境配置

1.把你的 VS Code 打造成 C 开发利器 https://cloud.tencent.com/developer/article/1555413 2.解决C代码在VSCode中无法快速跳转的问题。 在做C项目的时候&#xff0c; 发现在VSCODE里面的&#xff0c; 跳转很慢&#xff0c; 有时候还跳转失败。并且代码提示也不够友好。让…

在Global Mapper中导入点的文本格式

文章目录 有时候想在Global Mapper快速显示一个点的具体位置&#xff0c;来不及去创建一个具体的矢量文件。一个最快速的方式就是将这个点写在文本文件中导入&#xff1a; 13149831.629692005 2817252.5824931804 0 P1 导入后会询问你该文本文件的描述形式&#xff1a; 接着选择…

最强Microsoft Edge插件安装

一、Global Speed: 视频速度控制 Global Speed与几乎所有视频和音频流媒体站点兼容&#xff0c;包括Youtube&#xff0c;Netflix&#xff0c;哔哩哔哩&#xff0c;腾讯视频&#xff0c;百度网盘&#xff0c; 爱奇艺等。 当我们打开某个视频网站时&#xff0c;点击Global Spee…

关于node、vue、vue/cli安装的问题

新人一枚&#xff0c;说错勿喷。 今天在学习搭建安装vue脚手架&#xff08;vue/cli&#xff09;时碰到的问题。 在运行npm install vue/cli -g 报错&#xff0c;翻译过来大概的意思就是依赖包不对&#xff0c;在网上找了许多的资料。最后在别人博客中找到答案。 来源https://ww…