【Docker】Docker比虚拟机快的原因、ubuntu容器、镜像的分层概念和私有库的详细讲解

这篇具有很好参考价值的文章主要介绍了【Docker】Docker比虚拟机快的原因、ubuntu容器、镜像的分层概念和私有库的详细讲解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🚀欢迎来到本文🚀
🍉个人简介:陈童学哦,目前学习C/C++、算法、Python、Java等方向,一个正在慢慢前行的普通人。
🏀系列专栏:陈童学的日记
💡其他专栏:C++STL,感兴趣的小伙伴可以看看。
🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝 ​
⛱️万物从心起,心动则万物动🏄‍♂️

【Docker】Docker比虚拟机快的原因、ubuntu容器、镜像的分层概念和私有库的详细讲解,陈童学的日记,docker,ubuntu,容器,云原生,linux

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

1.Docker比虚拟机快的原因

众所周知,Docker比虚拟机快,那么为什么呢?凭啥Docker比虚拟机快呢?因为它更帅吗?任何主流的东西都是有它的优势的。

Docker比虚拟机快的主要原因有以下几点:

  • 1.资源利用率高:Docker容器共享宿主机的操作系统内核,不需要像虚拟机一样每个实例都运行完整的操作系统。这使得Docker容器在启动和停止时更加轻量级和快速。

  • 2.快速启动时间:Docker容器的启动时间通常只需要几秒钟,而虚拟机需要几分钟甚至更长时间。这是因为Docker容器不需要启动完整的操作系统,只需加载应用程序所需的文件和依赖项。

  • 3.资源隔离:虚拟机在运行时需要为每个实例分配一定的CPU、内存和磁盘资源,而Docker容器可以共享宿主机的资源。这种资源隔离方式使得Docker容器在性能方面更加高效。

  • 4.轻量级:Docker容器的镜像大小相对较小,只包含应用程序和其依赖项,而虚拟机镜像包含完整的操作系统。这使得Docker容器在传输和存储时更加高效。

【Docker】Docker比虚拟机快的原因、ubuntu容器、镜像的分层概念和私有库的详细讲解,陈童学的日记,docker,ubuntu,容器,云原生,linux

2.Dockers中关于ubuntu容器的简单说明

  Docker是一种容器化平台,它允许用户将应用程序及其依赖打包为一个独立的容器,提供了一种轻量级、可移植、可复制的方式来部署和运行应用程序。Ubuntu容器是指在Docker中基于Ubuntu操作系统镜像创建的容器。它是一个虚拟化的环境,可以运行Ubuntu操作系统及其相关的应用程序。

在Docker中创建一个Ubuntu容器可以通过以下步骤完成:

  • 1.首先,确保你已经安装好Docker。如果没有安装,请按照Docker官方文档的指引进行安装。
  • 2.打开终端或命令提示符,运行以下命令来拉取Ubuntu镜像:
docker pull ubuntu
  • 3.等待镜像下载完成后,可以运行以下命令来创建并启动一个Ubuntu容器:
docker run -it --name my_ubuntu_container ubuntu

这个命令会创建一个新的Ubuntu容器,并将终端连接到容器的交互式会话中。my_ubuntu_container是你给容器起的一个名称。

【Docker】Docker比虚拟机快的原因、ubuntu容器、镜像的分层概念和私有库的详细讲解,陈童学的日记,docker,ubuntu,容器,云原生,linux

3.Docker中镜像的分层概念

  在Docker中,镜像是构建和运行容器的基础。镜像是由一系列只读层(layers)组成的。每个层都包含了文件系统中的一部分,这些层会根据需要进行合并和重用,以创建最终的镜像。

镜像分层的概念有以下几个关键点:

  • 1.分层结构:Docker镜像是由多个只读层组成的,每个层都可以看作是文件系统中的一个快照。每个层都包含了增量的文件和目录变化,以及相应的元数据信息。这种分层结构使得镜像的构建和分发更加高效。

  • 2.基础镜像:镜像分层的最底层是一个基础镜像,它通常包含了操作系统的核心组件和基本工具。基础镜像可以是官方提供的如Ubuntu、CentOS等,也可以是自定义的。

  • 3.可写层:在基础镜像之上,可以有任意数量的可写层。可写层允许在容器中进行修改和更新操作。当容器启动时,可写层会与只读层一起形成容器的文件系统视图。

  • 4.共享和复用:由于镜像分层的机制,多个镜像可以共享相同的只读层,从而节省存储空间。当多个镜像使用相同的基础镜像时,它们可以共享相同的只读层,只需要额外存储各自的可写层。

  • 5.构建和发布:在构建镜像时,Docker会根据Dockerfile中的指令逐层构建镜像。每个指令都会创建一个新的只读层,并根据需要将其与之前的层进行合并。在发布镜像时,只需传输增量的层数据,而不需要传输整个镜像,这也使得镜像的分发更加高效。

3.1Docker中的UnionFS联合文件系统

  Docker中的联合文件系统是一种分层、轻量级并且高性能的文件系统技术,它支持对文件系统的修改作为一次提交来一层层的叠加,允许在容器中使用多个文件系统镜像,并将它们合并成一个单一的可读写的文件系统。这种技术称为联合文件系统,因为它通过在不同的文件系统镜像之间建立联合来实现。

  在Docker中,每个镜像都有一个基础镜像,所有的更改和添加都是在该基础镜像上进行的。当创建一个容器时,Docker会在基础镜像之上创建一个可写层。这个可写层允许在容器中对文件进行更改和添加,而不会影响到基础镜像。

  当容器启动时,Docker会将所有的镜像层以及可写层联合挂载到一个单一的文件系统中。这样,容器就可以访问并操作这个联合文件系统中的所有文件。当对文件进行修改或添加时,Docker会在可写层中创建新的文件或修改已有的文件,而不会改变基础镜像中的文件。

  联合文件系统的好处是它可以节省存储空间。因为每个容器都共享基础镜像的只读部分。

【Docker】Docker比虚拟机快的原因、ubuntu容器、镜像的分层概念和私有库的详细讲解,陈童学的日记,docker,ubuntu,容器,云原生,linux

3.2Docker中的镜像加载原理

  在Docker中,镜像是用于运行容器的文件系统。镜像加载是指将镜像从Docker仓库或本地缓存加载到本地系统,以供后续创建和运行容器。

镜像加载的过程大致可以分为以下几个步骤:

  • 1.镜像下载:如果镜像不在本地缓存中,Docker会从指定的仓库中下载镜像文件。默认情况下,Docker会从Docker Hub下载公共镜像,也可以通过配置使用其他仓库。

  • 2.镜像分层:镜像文件实际上由多个分层组成,每个分层都包含文件系统的一部分。Docker加载镜像时,会按照分层的顺序逐个加载,并将它们合并成一个单一的文件系统。

  • 3.分层缓存:Docker会根据镜像的分层信息进行缓存,以提高后续加载相同镜像时的速度。如果多个镜像共享相同的分层,只需要下载一次,并在本地缓存中进行复用。

  • 4.容器创建:一旦镜像加载完成,就可以使用该镜像创建容器。容器是镜像的一个实例化对象,它包含一个独立的文件系统和运行时环境。
    【Docker】Docker比虚拟机快的原因、ubuntu容器、镜像的分层概念和私有库的详细讲解,陈童学的日记,docker,ubuntu,容器,云原生,linux

4.Docker的私有库简介

  私有库是Docker中用于存储和管理镜像的仓库,它可以用于存储自己创建的镜像,以及从公共仓库拉取下来的镜像。在本地搭建私有库可以提供更高的安全性和更好的性能。搭建私有库可以使用Docker官方提供的Registry镜像,也可以使用第三方工具,如Harbor、Nexus等。
【Docker】Docker比虚拟机快的原因、ubuntu容器、镜像的分层概念和私有库的详细讲解,陈童学的日记,docker,ubuntu,容器,云原生,linux

下面以Docker官方的Registry为例进行讲解。

  • 1.下载Registry镜像:
docker pull registry
  • 2.运行Registry容器:
docker run -d -p 5000:5000 --restart=always --name registry registry

这里将容器的5000端口映射到宿主机的5000端口,方便访问私有库。

  • 3.配置Docker客户端:
    编辑Docker配置文件/etc/docker/daemon.json,添加以下内容:
{
  "insecure-registries": ["your-registry-domain:5000"]
}

这里将your-registry-domain替换为私有库的域名或IP地址。

  • 4.推送镜像到私有库:
    首先,为镜像添加标签,使其与私有库的地址关联:
docker tag your-image your-registry-domain:5000/your-image

然后,推送镜像到私有库:

docker push your-registry-domain:5000/your-image

这里将your-imageyour-registry-domain替换为实际的镜像名称和私有库地址。

  • 5.从私有库拉取镜像:
docker pull your-registry-domain:5000/your-image

这里将your-imageyour-registry-domain替换为实际的镜像名称和私有库地址。

以上就是在Docker中搭建私有库的详细步骤啦。通过私有库,你可以方便地管理和分享自己的镜像,同时也可以控制访问权限。

如果本文对大家有所帮助的话,还望各位能给我点赞、收藏并评论一下,感谢各位💕!!! 另如果大家有什么疑问或者建议的话,欢迎评论区留言。

拜拜ヾ(•ω•`)o文章来源地址https://www.toymoban.com/news/detail-621885.html

到了这里,关于【Docker】Docker比虚拟机快的原因、ubuntu容器、镜像的分层概念和私有库的详细讲解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker三大核心概念(镜像、容器和仓库)与虚拟化

    目录 1. Docker是什么 2. Docker与虚拟化 3. Docker虚拟化的好处 4. Docker核心概念    4.1.镜像    4.2.容器    4.3.仓库 5. CentOS7 安装docker(在线方式)    5.1.内核版本信息检查      5.2 卸载可能存在的旧版本      5.3 安装必要的系统工具    5.4 添加docker-ce安装源    5.5 更新yum缓存

    2023年04月17日
    浏览(29)
  • Docker - 基本概念、与虚拟机的区别、架构、镜像操作、容器操作、数据卷挂载

    目录 一、对 Docker  的理解 1、Docker 基本概念 2、Docker 与 虚拟机的区别 3、何为镜像和容器? 4、Docker 主要架构 二、Docker 基本操作 1、Docker 镜像操作 2、案例(镜像):去 DockerHub 搜索并拉取一个 Nginx 镜像,打包后删除镜像,重新加载 .tar 文件 3、Docker 容器操作 1.docker run(启

    2024年04月13日
    浏览(33)
  • 【Docker】Docker容器与虚拟机的对比、三要素、架构和镜像加速器的详细讲解

    🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前学习C/C++、算法、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:C++STL,感兴趣的小伙伴可以看看。 🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝 ​ ⛱️万物从心起,心动则万物动🏄

    2024年02月15日
    浏览(47)
  • Ubuntu虚拟机下docker容器的自启动设置

    一.背景 希望启动虚拟机后,当然docker自动启动了的情况下,我们希望对应的容器也自动启动,比如tomcat或者redis。 二.设置过程 1.如果是已经有容器实例了,修改吧 命令为:sudo docker update --restart=always  容器id或者名称 不知道名称或者id,可以输入命令查看:sudo docker ps -a 关

    2024年02月09日
    浏览(42)
  • 『 云原生·Docker』Docker镜像分层与Docker镜像操作(二)

    本系列主要分为以下六大部分,正在更新中,尽请期待! 『 云原生·生之门』 『 云原生·前置知识』 『 云原生·Docker』 『 云原生·Kubernetes』 『 云原生·KubeSphere』 『 云原生·DevOps』 🚩点击关注本专栏 提示:已经更新的或正在更新的文章前面打勾了哈! 镜像是Docker三大核心

    2024年02月06日
    浏览(34)
  • Docker 镜像解密:分层存储与镜像构建原理

    🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础入门篇)》学会Golang语言

    2024年02月13日
    浏览(28)
  • 工具系列(九) 本文(2万字) | 在ubuntu中安装docker教程 | 在Linux下Docker将镜像导出 | 上传至服务器 | 部署并创建容器 |

    点击进入专栏: 《人工智能专栏》 Python与Python | 机器学习 | 深度学习 | 目标检测 | YOLOv5及其改进 | YOLOv8及其改进 | 关键知识点 | 各种工具教程

    2024年01月19日
    浏览(57)
  • Docker 镜像解密:分层存储与构建原理多角度解析

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月16日
    浏览(31)
  • K8S部署后的使用:dashboard启动、使用+docker镜像拉取、容器部署(ubuntu环境+gpu3080+3主机+部署深度学习模型)

    0、k8s安装、docker安装 参考:前两步Ubuntu云原生环境安装,docker+k8s+kubeedge(亲测好用)_爱吃关东煮的博客-CSDN博客_ubantu部署kubeedge  配置节点gpu: K8S调用GPU资源配置指南_思影影思的博客-CSDN博客_k8s 使用gpu 1、重置和清除旧工程:每个节点主机都要运行 2、部署新的k8s项目:

    2023年04月20日
    浏览(48)
  • Selenium技术在CentOS6.8系统的腾讯云服务器上的docker镜像的Ubuntu容器里的相关使用(Linux环境下)

    一开始看标题,我知道你们会很懵,我当初完成的时候,我自己也很懵,主要是想在Linux环境下使用Selenium技术来完成一些工作,本来打算用docker创建一个Anaconda的容器来用Selenium技术的,但发现无法通过chrome驱动来驱动谷歌浏览器,所以我又用docker创建了一个Ubuntu容器来使用

    2024年02月03日
    浏览(74)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包