Docker学习笔记(一)概念理解

一、什么是docker容器

        Docker容器是一种轻量级、可移植的软件封装技术,它允许开发者将应用程序及其依赖、配置文件、运行环境等打包到一个独立的、自包含的执行单元中。容器与虚拟机相似,都提供了隔离的运行环境,但容器更加轻量级,因为它不需要像虚拟机那样为每个应用配备完整的操作系统;而是共享主机的操作系统内核,同时利用资源隔离机制(如cgroups和命名空间)来保证容器间互不影响。

Docker容器的核心优势包括:

  1. 轻量级:启动和停止速度极快,资源利用率高,相比传统虚拟机,容器在内存和CPU使用上更为高效。
  2. 标准化:Docker镜像提供了一种标准化的软件打包和交付方式,使得应用程序可以在任何支持Docker的环境中一致地运行,实现了“一次构建,到处运行”。
  3. 隔离性:每个容器都在自己的视图中运行,拥有独立的文件系统、网络配置、进程空间等,与宿主机和其他容器隔离。
  4. 可移植性:Docker容器可以在不同的硬件平台、操作系统和云环境中无缝迁移。
  5. 可扩展性:易于创建、复制和销毁容器,便于实现水平扩展和负载均衡。

容器与虚拟机的区别

        为什么要和虚拟机做比较,用过虚拟机的同学应该知道,虚拟机也是将主机资源分配出一部分,进行隔离,提供另一个系统环境。但是虚拟机是模拟出了一台完整的电脑,包括它的硬件资源,虚拟机是可以像电脑一样进入bios中,使用u盘安装系统的。

容器

        容器是应用层的抽象,它将代码和依赖关系打包在一起。多个容器可以在同一台机器上运行,并与其他容器共享操作系统内核,每个容器在用户空间中作为独立进程运行。容器占用的空间比VM少(容器映像的大小通常为几十MB),可以处理更多的应用程序,并且需要更少的VM和操作系统。

虚拟机

        虚拟机(VM)是物理硬件的抽象,将一台服务器转变为多台服务器。管理程序允许多台VM在单台机器上运行。每个VM都包含操作系统的完整副本,应用程序,必要的二进制文件和库 - 占用数十GB。虚拟机也可能很慢启动。

为什么要使用容器?

        首先建立在我们需要环境隔离的基础上。
        根据上面的介绍,可以看出虚拟机,是主机级虚拟化,完整的虚拟出一台计算机,然后在虚拟出来的机器上安装操作系统,做到环境隔离。想想我们的服务部署在虚拟机上是什么情况。

        如上图所示,在宿主机中安装了系统,系统中安装了虚拟机,虚拟机虚拟出一台计算机,在虚拟计算机中安装完整的系统,再将服务部署在虚拟系统中。
       部署的服务受虚拟机的内核调度,虚拟机受主机的调度,多层及下主机资源产生了严重的浪费。如果要在一台机器上部署多个服务,还要环境隔离,那就需要有多个虚拟机,所需要的资源也就不言而喻。

如果使用容器是什么样的呢?

        容器是在主机的操作系统中,隔离出单独的用户空间,每个都是单独的沙箱,环境互不影响。需要的系统资源也只是服务所需要的资源,减少了虚拟主机的资源开销。

 二、什么是镜像

Docker镜像(Docker Image)是Docker技术中的核心组件之一,它是一个轻量级、可执行的独立软件包,充当了创建Docker容器的蓝图或模板。镜像定义了运行应用程序所需的所有内容,包括代码、运行时环境(如Python、Node.js等)、库依赖、环境变量、配置文件以及操作系统的层。每个Docker容器都是从某个镜像实例化而来的。

Docker镜像的几个关键特性包括:

  1. 分层结构:Docker镜像是由多个层(layers)组成的,每一层代表了文件系统的差异变更。这种分层设计使得镜像的构建、传输和存储更加高效。当一个层被更改或添加,只会保存该层的差异部分,而非整个镜像,这有助于减小存储占用和加速镜像的传输过程。

  2. 不可变性:一旦构建完成,镜像的内容就是静态的、只读的。这意味着运行时对容器的修改不会影响到原始镜像,保证了环境的一致性和可复现性。

  3. 内容寻址:每个镜像层都有一个唯一的ID,通常是通过SHA256算法计算得出的校验和,确保了镜像的唯一性和完整性。当从Docker Hub或其他注册表下载镜像时,Docker会检查本地是否已存在相同的层,从而避免重复下载,提高了效率。

  4. 可移植性:Docker镜像可以在任何支持Docker的平台上运行,确保了应用程序在不同环境之间的一致运行,实现了“一次构建,到处运行”的理念。

  5. 创建与管理:用户可以通过Dockerfile来定义和自动化构建镜像的过程,也可以基于现有镜像使用docker commit命令创建新镜像,或者通过docker pull命令从Docker Hub等镜像仓库下载镜像,使用docker images命令查看本地镜像列表。

三、什么是仓库

Docker仓库(Docker Repository)是集中存储和分发Docker镜像的场所,类似于代码仓库用于存储代码一样,Docker仓库用于存放用户创建或下载的Docker镜像(可以理解为软件商店)。仓库是Docker生态系统中非常关键的一部分,它支持Docker镜像的分享、重用和版本控制。

Docker仓库可以分为两大类:

  1. 公共仓库:最知名的公共仓库是Docker Hub,这是Docker官方维护的服务,用户可以免费上传和下载镜像。Docker Hub上存有成千上万的镜像,包括各种流行的应用、服务以及基础镜像,如Ubuntu、Nginx、MySQL等。任何人都可以搜索、下载这些镜像来使用,也可以上传自己的镜像供他人使用。

  2. 私有仓库:除了公共仓库,用户或组织还可以搭建自己的私有仓库,用于存储和管理不想公开的镜像,或满足企业内部的安全和合规要求。私有仓库可以使用Docker官方提供的Docker Registry软件来部署,也可以使用第三方的私有仓库解决方案,如Harbor、GitLab Container Registry等。

Docker仓库的工作原理涉及仓库注册服务器(Registry),这是一个存储和分发镜像的服务端组件。每个仓库可以包含多个镜像,每个镜像又有不同的标签(tags),标签用来标记镜像的版本或变体。当用户执行docker pulldocker push命令时,实际上是在与仓库注册服务器进行通信,以下载或上传镜像。

参考文章:Docker容器技术----什么是容器? - 简书

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

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

相关文章

如何清理电脑内存?让电脑运行如飞!

电脑内存(RAM)的清理对于维持系统的流畅运行至关重要。随着使用时间的增加,系统内存会被各种应用程序和后台进程占用,导致系统响应变慢,甚至出现卡顿现象。通过有效地清理内存,可以提升电脑的性能&#xff…

深入理解如何撤销 Git 中不想提交的文件

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

MySQL内存使用率高且不释放问题排查与总结

背景 生产环境mysql 5.7内存占用超过90%以上,且一直下不来。截图如下: 原因分析 1、确定mysql具体的占用内存大小,通过命令:cat /proc/Mysql进程ID/status查看 命令执行后的结果比较多(其他参数的含义想了解可参考这…

静态路由的配置

5.3静态路由 静态路由由网络管理员手动配置,配置方便,对系统要求低,适用于拓扑结构简单并且稳定的小型网络。缺点是不能自动适应网络拓扑的变化,需要人工干预。 5.3.1静态路由实验 1、实验需求 ① 掌握路由表的概念&#xff1…

cpp随笔——如何实现一个简单的进程心跳功能

什么是进程的心跳 在我们日常后台服务程序运行中,一般是调度模块,进程心跳以及进程监控共同工作,进而实现实现服务的稳定运行,在前面我们介绍过如何去实现一个简单的调度模块,而今天我们所要介绍的就是如何实现进程的心跳,首先什么是进程的心…

git上传文件

git init git add . git commit -m " " git remote add origin 仓库的地址 git push -u origin master 如果出现以下问题 可以用这一句强制上传 git push -f origin master

Centos下rpm和yum执行卡住问题(已解决)

问题描述 执行rpm和yum卡住, 没有任何报错信息,且无法 ctrl c 终止,只能通过后台 kill -9 杀死。 问题排查: 查看yum日志:yum -vv 软件包 会发现卡在 loading keyring from rpmdb,即load DB存在问题。 …

使用 llamaIndex 快速实现智能体

AI 智能体就是可以根据当前环境进行推理,并根据处理结果进行下一步的操作。简单来说 AI 智能体可以与外界环境进行交互,并根据结果执行更复杂的操作。本文将通过llamaIndex 实现一个简单的 Agent 实时获取数据,由于大模型是通过静态数据进行训…

收银系统源码分享-PHP可二开

千呼新零售2.0系统是零售行业连锁店一体化收银系统,包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体,线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 私有化独立…

游戏工作室如何巧妙应对IP封禁风险?

游戏工作室在使用IP时,面临着封号的风险,因此需要采取一些防封技巧来保护自己的运营。以下是一些游戏工作室常用的防封技巧。 1. 多IP轮换 游戏工作室可以使用多个代理IP,并定期轮换它们。这样做可以减少单个IP被频繁访问同一游戏服务器而被…

C++_03

1、构造函数 1.1 什么是构造函数 类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。 每次构造的是构造成员变量的初始化值,内存空间等。 构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不…

Windows系统安装SSH服务结合内网穿透配置公网地址远程ssh连接

前言 在当今的数字化转型时代,远程连接和管理计算机已成为日常工作中不可或缺的一部分。对于 Windows 用户而言,SSH(Secure Shell)协议提供了一种安全、高效的远程访问和命令执行方式。SSH 不仅提供了加密的通信通道,…

路由的高级用法

多级路由 1.新建一个Mian组件 <template><div> <h1>我是Msg的子组件</h1></div> </template><script> export default {name: "Mian", } </script><style> </style> 2.在router中msg小新建一个路由 imp…

Canvas合集更更更之实现由画布中心向外随机不断发散的粒子效果

实现效果 1.支持颜色设置 2.支持粒子数量设置 3.支持粒子大小设置 写在最后&#x1f352; 源码&#xff0c;关注&#x1f365;苏苏的bug&#xff0c;&#x1f361;苏苏的github&#xff0c;&#x1f36a;苏苏的码云

实验九 存储过程和触发器

题目 创建并执行一个无参数的存储过程proc_product1&#xff0c;通过该存储过程可以查询商品类别名称为“笔记本电脑”的商品的详细信息&#xff1a;包括商品编号、商品名称、品牌、库存量、单价和上架时间信息 2、创建并执行一个带输入参数的存储过程proc_product2&#xff…

【软件测试】Postman接口测试基本操作

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;薪资嘎嘎涨 Postman-获取验证码 需求&#xff1a;使用Postman访问验证码接口&#xff0c;并查看响应结果…

图书管理系统(持久化存储数据以及增添新功能)

目录 一、数据库表设计 二、引入MyBatis 和MySQL 驱动依赖 三、配置数据库 & 日志 四、Model创建 五、枚举类 常量类用户登录 六、用户登录 七、添加图书 八、图书列表 九、修改图书 十、删除图书 十一、批量删除 十二、强制登录 十三、前端代码 &#xff0…

AI与测试相辅相成

AI助力软件测试 1.AI赋能软件测试 使用AI工具来帮助测试人员提高测试效率&#xff0c;提供缺陷分析和缺陷预测。 语法格式 设定角色 具体指示 上下文格式 例: 角色&#xff1a;你是一个测试人员 内容&#xff1a;请帮我生成登录案例的测试用例 ​ 1.只有输入正确账号和密码才…

生命在于学习——Python人工智能原理(3.2.1)

二、随机变量 2.1 随机变量及其分布 &#xff08;一&#xff09;基本概念 定义1 随机变量 随机变量表示随机试验各种结果的实值单值函数&#xff0c;即能用数学分析方法来研究随机现象&#xff0c;例如某一时间内公共汽车站等车的乘客人数、淘宝在一定时间内的交易次数等&am…

Shenandoah GC概述

文章目录 1_介绍2_原理1.0版本2.0版本3_ShenandoahGC的执行流程4_并发转移阶段 – 并发问题 1_介绍 Shenandoah 是由Red Hat开发的一款低延迟的垃圾收集器&#xff0c;Shenandoah 并发执行大部分 GC 工作&#xff0c;包括并发的整理&#xff0c;堆大小对STW的时间基本没有影响…