【docker】docker 是什么

docker 是什么

  • [Docker 本质](#Docker 本质)
  • [Docker 的引擎迭代](#Docker 的引擎迭代)
  • [Docker 和虚拟机的区别](#Docker 和虚拟机的区别)
  • [Docker 为什么比虚拟机资源利用率高,启动快](#Docker 为什么比虚拟机资源利用率高,启动快)
  • [Docker 和 JVM 虚拟化的区别?](#Docker 和 JVM 虚拟化的区别?)

Docker 本质

Docker 本质其实是 LXC 之类的增强版,它本身不是容器,而是容器的易用工具。容器是 linux 内核中的技术,Docker 只是把这种技术在使用上简易普及了。Docker 在早期的版本其核心就是 LXC 的二次封装发行版。

Docker 作为容器技术的一个实现,或者说让容器技术普及开来的最成功的实现。Docker 是基于 Go 语言实现的一个开源项目,它的主要目标是"Build,Ship andRun Any APP,Anywhere",即通过对组件的封装、分发、部署、运行等生命周期的管理,使得用户的应用及其运行环境能够做到"一次封装,到处运行"。

早期 Docker 利用 LXC 做容器管理引擎,但是在创建容器时,不再使用模板去安装生成,而是通过镜像技术(把一个操作系统用户空间所需要使用到的组件事先编排好,并整体打包成一个文件,image 文件),镜像文件集中放在一个仓库中。当需要创建容器时,Docker 调用 LXC 的工具 lxc-create,但不再通过 lxc 的模板去安装,而是连接到镜像服务器上下载匹配的镜像文件,而后基于镜像启动容器。所以,Docker 极大的简化了容器的使用难度。以后我们创建启动容器,只需要一个命令,docker-run,docker-stop 就可以启动停止一个容器了。

Docker 的引擎迭代

Docker 早期是基于 LXC 容器管理引擎实现,当后来成熟之后,Docker 自建了一个容器引擎叫 libcontainer,后来 CNCF 的介入,Docker 又研发了一个工业化标准的容器引擎 runC,目前所使用的新版 Docker,所使用的容器引擎就是 RunC。

Docker 和虚拟机的区别


Docker 为什么比虚拟机资源利用率高,启动快

docker 有比虚拟机更少的抽象层。docker 不需要 Hypervisor 实现硬件资源虚拟化,运行在 docker 容器上的程序直接使用的是实际物理机的硬件资源。因此在 cpu、内存利用率上 docker 将会在效率上有明显的优势。docker 利用的是宿主机的内核,而不需要Guest OS,节省了 Guest OS 占用的资源。

docker 不需要 Guest OS,创建一个容器时,不需要和虚拟机一样重新加载一个操作系统内核。从而避免引寻、加载操作系统内核返回时耗时耗资源的过程,当新建一个虚拟机时,虚拟机软件需要加载 Guest OS,返回新建过程是分钟级别的。而新建一个docker 容器只需要几秒钟。

Docker 和 JVM 虚拟化的区别?


相关推荐
漫谈数据智理3 分钟前
IDS-RAM 如何支撑数据空间走向可
大数据·运维·微服务
佳児素花痴╮3 分钟前
网络问题与基础理论
运维·服务器·网络
tanglinS25 分钟前
工业陶瓷在半导体设备里都用哪里?氮化铝基板与氮化硅结构件的静电无尘角色
大数据·运维·人工智能·自动化·材质
highreport28 分钟前
HighReport报表工具定时调度和邮件定时发送
运维·服务器·数据库
St_rive1 小时前
Pytest skip&&skipif跳过⽤例
运维·服务器·pytest
buhuizhiyuci1 小时前
【Linux 篇】数字世界的水流蓄水池 —— IO 缓冲区机制深度实战解析
linux·运维·服务器·c++
贝锐1 小时前
多校区互通、临时联网、远程运维,校园网络升级用蒲公英更省心!
运维·组网
梦想的旅途21 小时前
企业微信 API 二次开发:私域场景下的自动化裂变
运维·自动化·企业微信
云川之下1 小时前
【k8s】Docker inspect 命令
docker·容器·kubernetes
游戏开发爱好者81 小时前
App Store 上传 IPA 自动化,.p8 密钥认证与 CI/CD 接入实战
android·运维·ci/cd·小程序·uni-app·自动化·iphone