Docker 是什么?

259 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第8天,点击查看活动详情

Docker 是什么?

Docker 是一个开源的应用容器引擎。

使用 Go 语言开发实现,基于 Linux 内核 cgroup ,namespace,以及 OverlayFS类的Union F是等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。

由于隔离的进程独立于宿主和其它的隔离的进程,因此也成为容器。

Docker在容器基础上,从文件系统,网络互联到进程隔离等进行进一步封装,使得更大简化容器的创建和维护,这也使得比虚拟机技术更轻便、快捷。

传统虚拟机技术

以往使用虚拟机时,都是安装虚拟机,并引入操作系统镜像文件,这样虚拟机就虚拟出一套硬件,然后就可以在虚拟机中使用虚拟计算机。如此,虚拟机基本就是运行一个完整的操作系统,然后该系统再运行了所需应用进程。

Docker技术

容器内的应用进程直接运行于宿主的内核,容器没有自己的内核,也没有进行硬件虚拟。所以容器比虚拟机更为轻便。

为什么使用?

Docker 可以说是一种新的虚拟化方式,相比较于传统的虚拟化技术有更多优势

  • 更高效利用资源

    • 传统虚拟化技术,需要进行硬件虚拟以及运行完整的操作系统等额外开销
    • Docker 是直接运行于宿主(真实物理机)的内核上,对系统资源利用率更高
  • 更快启动

    • Docker 容器应用都是直接运行于宿主内核,无需启动完整的操作系统,可以做到秒级启动
  • 运行环境一致

    • Docker 引擎可以将各种独立的应用和应用的依赖进行独立打包,相互独立运行于宿主机硬件上,确保了整个过程运行的环境在我们开发,测试环境,正式环境都保持一致
  • 持续交付和部署

    • 使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署
    • 可使用 Dockerfile 进行镜像构建,并结合 CI/CD进行集成测试;可以在各个环境直接快速部署该镜像,并结合CI/CD自动化部署
  • 轻松迁移,维护和扩展