前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Docker学习系列】Docker学习3-docker的run命令干了什么?docker为什么比虚拟机快?

【Docker学习系列】Docker学习3-docker的run命令干了什么?docker为什么比虚拟机快?

作者头像
凯哥Java
发布2022-12-16 20:40:43
3560
发布2022-12-16 20:40:43
举报
文章被收录于专栏:凯哥Java凯哥Java

通过前面学习,我们已经在centos系统中安装了docker,也成功的拉取了docker的hello-word镜像及运行成功了。那么有没有思考过如下问题:

思考问题1:

docker run 到底干了些什么?

当我们执行docker run 镜像名称之后,docker会执行以下流程:

1:docker会先从本机中寻找该镜像,查看本机是否存在。如果当前镜像,就直接以该镜像为模板生成容器实例来运行;如果本机不存在,就执行2;

2:去docker hub上查询该镜像(因为在上一篇中,大家跟着凯哥,已经将拉取镜像地址修改成阿里云的了,所以这里会从阿里云拉取镜像),远程镜像仓库是否能找到,如果找到,下载该镜像到本地,然后以该镜像为模板生成容器实例来运行;如果远程仓库不存在当前镜像,执行3;

3:如果在远程仓库中,也为找到该镜像,则提示原型失败,查不到该镜像。

整个流程如下图:

思考2:docker为什么会比VM虚拟机快呢?

我们来看看一个形象的docker和VM虚拟机的对比图。如下图:

那么docker为什么会比VM虚拟机快呢?主要有以下两点:

1:docker有着比虚拟机更少的抽象层

由于Docker不需要Hypervisor(虚拟机)实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源;

我们知道虚拟机是需要虚拟出CPU及设置内存大小的。实际上就是,虚拟机虚拟出了CPU、内存等硬件资源。这比docker来说,多了很多抽象层的。如下图:

因此在CPU、内存利用率上docker将会在效率上有明显的。

2:docker利用的是宿主机的内核,而不需要加载操作系统的OS内核

当新建一个容器时候,docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免了引寻、加载等操作内核返回等比较费时费资源的过程。

当新建一个虚拟机的时候,虚拟机软件需要加载OS,返回新建过程是分钟级别的,我们知道,创建虚拟机、安装操作系统,这个操作一系列下来,花费的时间不是几分钟而已,可能是好几十分钟。如下图:

而docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个docker容器只需要几秒钟时间。docker架构图如下:

如果重启了宿主机。使用下面命令启动docker

systemctl daemon-reload

systemctl restart docker.service

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-12-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 思考问题1:
  • 思考2:docker为什么会比VM虚拟机快呢?
  • 如果重启了宿主机。使用下面命令启动docker
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档