Docker概念介绍

news2025/4/8 19:29:51

目录

1、传统方式、虚拟化、容器部署方式的区别

2、为什么会有docker 

3、什么是docker

 4、docker的优势

 5、Docker组成部分

 6、docker镜像的原理介绍

 7、 容器应用场景

8、Docker资源汇总


了解docker之前,我们要先了解部署方式有哪些,各有什么优缺点!

1、传统方式、虚拟化、容器部署方式的区别

企业软件的部署方式介绍:

传统部署方式在企业的最初期,直接将软件部署在企业服务器上

优点:部署简单,不需要复杂的技术参与

缺点:无法定义资源的使用量,很难合理分配计算机资源,程序之间容易产生影响。

虚拟化部署方式介绍:

虚拟化是计算机系统的仿真技术,可以在一台物理机上模仿出多台跟物理机一样的单独计算机系统,可将软件部署在虚拟机中。

优点:可以合理的利用计算机的资源,降低了成本,每个虚拟机拥有独立的运行环境,可保障程序之间不会相互影响。

缺点:每个虚拟机不仅需要虚拟出一套完整的系统副本,还需要虚拟所有硬件的副本

缺点:占用资源多:虚拟机需要安装整个操作系统,自然会消耗大量内存和硬盘空间。如我们只需要运行1MB的软件,有时候也不得不安装几个G的环境才能运行。

缺点:运行步骤冗余:虚拟机安装的是完整的系统,每次运行程序都需要按部就班,打开系统、登入用户等等之类麻烦的步骤,很不方便。

缺点:运行速度慢:为了运行特定环境中的软件,虚拟机必须先运行系统,而系统占用的资源往往很多(网络,GUI,IO等等),自然也会影响运行速度。

容器化部署方式介绍:

容器化部署和虚拟机部署方式类似,可以在一台物理机上运行多个容器,将软件部署在容器中。

优点:与虚拟化类似,可以合理的利用计算机的资源,降低了成本,每个容器拥有独立的运行环境,可保障程序之间不会相互影响

区别:容器不需要完整的系统副本与所有硬件的副本,我们可以把容器看成虚拟机的精华版,容器位于物理机系统之上,共享了同一个物理机系统内核及硬件资源。

区别:容器减少了内核与硬件资源的虚拟化工序,只保留了容器内程序所需要的必要配置,这就意味着容器比虚拟机更节约系统资源,更加的轻量(启动秒级别的)

 此外,容器还可以为开发,测试,运维提供一个可移植,一致的操作环境。

2、为什么会有docker 

我们知道一款产品从开发到上线,从开发环境到生成环境。作为开发和运维人员之间协作需要考虑很多问题,尤其是当我们的产品多版本迭代之后,不同环境之间的兼容就会成为一个大问题;这时 Docker 的出现就解决了这一难题,Docker 的出现使我们开发的软件可以“带环境安装”,即安装的时候,可以把原始环境一模一样的的复制过来,不用在担心环境不一致导致“开发时可以正常运行,生成环境就会出问题”,“在我的机器上可以正常运行,在别人的机器上就不能运行”的问题了。

3、什么是docker

Docker 就像是一个轻量级的虚拟机,Docker是一个轻量级的容器,我们可以将环境交给 Docker 来管理,当我们需要移植我们的产品的时候,就可以将环境整个的迁移到另一台主机上,而不向虚拟机一样,迁移一台虚拟机极其资源;

Docker 是一个开源的应用容器引擎,基于 Go 语言开发。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

总之:Docker相较于虚拟机来说具有更加轻量,启动更快,效率更高,可移植性更强等优势,实现了“一次封装,到处运行”,不用在关心环境的不一致问题

 4、docker的优势

运行环境的一致性:Docker 的镜像提供了除了内核之外完整的运行环境,确保了应用运行的一致性;

更快速地启动部署:可以做到秒级,甚至毫秒级的的启动时间。大大节约了开发、测试、部署的时间;

更好的隔离性:每个服务器都是独立运行的、完全隔离的。避免公用的服务器,资源会容易受到其他用户的影响;

弹性伸缩、快速扩展:能够更好的处理集中爆发式的服务器使用压力;

迁移更加方便:“带环境安装”;

持续交付和部署:使用 Docker 可以通过定制镜像来实现持续集成,交付,部署;

 5Docker组成部分

镜像(images):用来创建容器的模板(静态文件),一个镜像可以创建多个容器(容器动态)

容器(container): 程序的载体,程序运行在容器中,每个容器相互隔离,互不影响,但可以相互通讯

仓库(Repository):集中存放镜像的场所,仓库分为公开仓库(public)和私有仓库(private)两种(类似于git和SVN)

最大的公开仓库为docker hub:https://hub.docker.com

国内的公开仓库包括:阿里、网易、中科大等

 6docker镜像的原理介绍

什么是镜像:

镜像是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像。有通过这个镜像文件才能生成Docker容器实例。(类似Java中new出来一个对象)

 镜像的分层:

Docker镜像由特殊的文件系统叠加而成,最底层是宿主机的bootfs(引导加载程序、内核)父镜像。

第二层是rootfs(称为:基础镜像)

再往上可以叠加其他的镜像文件,例如:jdk、tomcat(这也不难理解了,tomcat本身就运行在jdk环境下,但是我们从始至终都没有在docker中安装过jdk环境)

这种镜像叠加的方式我们称为“统一文件系统(Union File System)”将不同的层整合成一个文件系统,这样就隐藏 了多层的存在,在用户角度看来,只存在一个文件系统。

 Docker镜像的本质是什么:

docker镜像的本质是一个分层的文件系统

centos的iso镜像文件是包含bootfs和rootfs及大量软件 包,而docker的centos镜像复用了操作系统的bootfs,也没有大量软件包,只有rootfs和其他必要镜像层。

由于docker镜像是分层的,例如:tomcat、mysql镜像本 身课程也就几十MB,但是它们需要依赖基础镜像及其他镜 像层,所以对外暴露的tomcat、MySQL大小会很大。

 镜像加载原理:

bootfs(boot file system):docker镜像的最底层是bootfs,主要包含bootloader(加载器)和kernel(内核)。bootloader主要是引导加载kernel,linux刚启动时会加载bootfs文件系统。这一层与典型的linux/Unix系统一样,包含bootloader和kernel。 当boot加载完成后,整个内核就在内存中了,此时内存的使用权已由bootfs转交给了内核,此时系统也会卸载bootfs。这里的加载,可以理解为,我们windows电脑开机时候,从黑屏到进入操作系统的过程。

rootfs(root filesystem):在bootfs之上,包含的就是典型linux系统中的/dev、/proc、/bin、/etc等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu、Centos等等。

 7 容器应用场景

 和为什么会有docker一样,互联网行业倡导敏捷开发,持续集成部署CI/CD便是最典型的开发模式,容器非常适合持续集成和持续交付(CI / CD)工作流程。

8、Docker资源汇总

Docker 官方主页

Docker 官方博客

Docker 官方文档

Docker Store(镜像文件库)

Docker Cloud(云平台文档)

Docker Hub

Docker 的源代码仓库

Docker 发布版本历史

Docker 常见问题

Docker 远端应用 API

 docker离线安装方式可参考上一篇文章

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

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

相关文章

Windows 右键菜单扩展容器 [开源]

今天给大家分享一个我做的小工具&#xff0c;可以自定义扩展右键菜单的功能来提高工作效率&#xff0c;效果图如下&#xff1a; 如上图&#xff0c;右键菜单多了几个我自定义的菜单&#xff1a; 复制文件路径 复制文件夹路径 我的工具箱 <走配置文件动态创建子菜单&#x…

cesium封装实现配置格网及插值高程面实现

一、数据结构建模二、插值算法得到的插值结果三、图层配置primitiveGrid:{isRLayerPanel: true,primitives:[],url: /static/data/Grid.json,dataPath: ,dataIdField: code,options:{id:primitiveGrid,name:格网,type:grid,isShow: false},location: {"destination":…

Hive中的基础函数(一)

一、hive中的内置函数根据应用归类整体可以分为8大种类型。 1、 String Functions 字符串函数 主要针对字符串数据类型进行操作&#xff0c;比如下面这些&#xff1a; 字符串长度函数&#xff1a;length •字符串反转函数&#xff1a;reverse •字符串连接函数&#xff1a;…

Word处理控件Aspose.Words功能演示:使用 C++ 在 Word 文档 (DOC/DOCX) 中插入表格

Aspose.Words 是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。此外&#xff0c; Aspose API支持流行文件格式处…

基于python的多线程数据库数据录入

说明&#xff1a; 使用python编程结合多线程技术&#xff0c;将已经在python文件中的数据批量写入到数据库&#xff0c;便于数据关系结构化管理。 环境配置&#xff1a; certifi2019.6.16 chardet3.0.4 idna2.8 PyMySQL0.9.3 requests2.22.0 urllib31.25.3 将所需要的环境保…

vue模板语法和数据绑定和el、data的两种

vue模板语法有两大类&#xff1a; 1.插值语法&#xff1a; 功能&#xff1a;用于解拆标签体内容 写法&#xff1a;{{xxx}}&#xff0c;xxx是js表达式&#xff0c;且可以直接读取到data中的所有属性 2.指令语法&#xff1a; 功能&#xff1a;用于解拆标签&#xff08;包括&…

《商用密码应用与安全性评估》第一章密码基础知识1.1应用概念

密码的概念与作用 概念 密码&#xff1a;采用特定变换的方法对信息进行加密保护、安全认证的技术、产品和服务。 密码技术&#xff1a;密码编码、实现、协议、安全防护、分析破译、以及密钥产生、分发、传递、使 用、销毁等技术。 密码技术核心&#xff1a;密码算法…

家用洗地机什么品牌质量好耐用?最适合家用的洗地机

近些年&#xff0c;随着消费水平的不断升级&#xff0c;我们对家电产品的要求也在逐步提高&#xff0c;就以这几年非常流行的洗地机为例&#xff0c;如今的人们在选洗地机时&#xff0c;会综合考虑价位、技术、配置、颜值、功能等多个方面&#xff0c;那么市场上家用洗地机什么…

JAVACC

JavaCC全称为Java Compiler Compiler&#xff0c;它是一个生成器&#xff0c;用于生成词法分析器&#xff08;lexical analysers&#xff09;和语法分析器&#xff08;parsers&#xff09;&#xff1b;JavaCC本身并不是词法分析器和语法分析器&#xff0c;它是一个生成器&#…

mysql数据库之索引结构

MySQL的索引是在存储引擎层实现的&#xff0c;不同的存储引擎有不同的结构。 一、常见索引。 索引结构描述BTree索引最常见的索引类型&#xff0c;大部分引擎都支持B树索引Hash索引底层数据结构是用哈希表实现的&#xff0c;只有精确匹配索引列的查询才有效&#xff0c;不支持…

Web版和客户端哪种SQL工具更好?ChatGPT有话要说

2023年年初公司发布了一款Web版SQL工具&#xff0c;短期内就赢得了众多用户的喜爱和下载。不过&#xff0c;也有SQL用户在评论区中提出自己的观点&#xff0c;认为Web版工具都不可靠&#xff0c;甚至看见Web版工具就劝返… … 工具Web化逐渐成为一种趋势&#xff0c;比如&…

如何使用Bypass-Url-Parser实现URL绕过并访问40X受保护页面

关于Bypass-Url-Parser Bypass-Url-Parser是一款功能强大的URL绕过工具&#xff0c;该工具可以使用多种方法实现URL绕过并访问目标站点的40X受保护页面。 工具下载 由于该工具基于Python 3 开发&#xff0c;因此我们首先需要在本地设备上安装并配置好Python 3环境。接下来&a…

PLC实验—西门子S7 1200读取超声波传感器数据

PLC实验—西门子S7 1200读取超声波传感器数据 US-016超声波测距模块 实验箱上是US-016超声波测距模块&#xff0c;其有关信息可以看实验室的博客 US-016超声波测距模块 1号Pin&#xff1a;接VCC电源&#xff08;直流5V&#xff09; 2号Pin&#xff1a;量程设置引脚&#xff…

GWT安装过程

1:安装前准备 &#xff08;可以问我要&#xff09; appengine-java-sdk-1.9.8 com.google.gdt.eclipse.suite.4.3.update.site_3.8.0 gwt-2.5.1 eclipse-jee-kepler-SR2-win32-x86_64.zip 2&#xff1a;安装环境上 打开eclipse Help –Install New Software… 选择Add –…

如何使用工时表管理项目和非项目的资源?

对新机会做出反应的能力是企业竞争优势的关键。项目不断涌现&#xff0c;企业需要了解具体的可用性以及是否有资源来接受新事物。更进一步来说&#xff0c;企业需要知道员工将时间花在哪里。 使用 8Manage工时表解决方案&#xff0c;你将始终拥有做出正确业务决策所需的全面知…

vue源码分析-响应式系统工作原理

上一章&#xff0c;我们讲到了Vue初始化做的一些操作&#xff0c;那么我们这一章来讲一个Vue核心概念响应式系统。 我们先来看一下官方对深入响应式系统的解释: 当你把一个普通的 JavaScript 对象传给 Vue 实例的 data 选项&#xff0c;Vue 将遍历此对象所有的属性。 并使用 O…

LeetCode:构造最大二叉树;使用中序和后序数组构造二叉树;使用前序和中序数组遍历二叉树。

构造二叉树最好都是使用前序遍历&#xff1b;中左右的顺序。 654. 最大二叉树 中等 636 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建…

人力资源管理系统

技术&#xff1a;Java、JSP等摘要&#xff1a;在当今的信息化社会&#xff0c;为了更有效率地工作&#xff0c;人们充分利用现在的电子信息技术&#xff0c;在办公室架设起办公服务平台&#xff0c;将人力资源相关信息统一起来管理&#xff0c;帮助管理者有效组织降低成本和加速…

【Linux】gcc/g++/gdb的使用

&#x1f525;&#x1f525; 欢迎来到小林的博客&#xff01;&#xff01;       &#x1f6f0;️博客主页&#xff1a;✈️小林爱敲代码       &#x1f6f0;️社区 : 进步学堂       &#x1f6f0;️欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收…

Mask R-CNN 算法学习总结

Mask R-CNN 相关知识点整体框架1.Resnet 深度残差学习1.1 目的1.2 深度学习深度增加带来的问题1.3 Resnet实现思想【添加恒等映射】2.线性插值2.1 目的2.2 线性插值原理2.3 为什么使用线性插值?3.FPN 特征金字塔3.1 FPN介绍3.2 为什么使用FPN?3.3 自下而上层【提取特征】3.4 …