Docker 实现原理浅析(一)

Docker 的发展契机

Docker 是容器技术的一种实现,主要解决了以下问题:

  • 为应用提供了一种类似沙盒的隔离运行环境

总而言之,Linux上运行的容器,其实质是宿主机上的一个进程。只是,Linux Docker使用某些类似障眼法的技术,是的容器自己看到的内容中,自己的启动进程是唯一的系统进程。具体而言,使用Cgroups技术制造一种约束环境,使用Namespace技术修改进程试图。在之后的文章中会详细介绍以上两个技术的具体实现方式。

  • 解决了应用执行环境的打包问题

Docker通过Docker镜像,解决了应用打包问题,所谓Docker镜像,一般是包含完整操作系统和应用的运行时环境,是的应用部署变得非常容易,某种程度上简化了了开发和运维之间的诸多环境不一致带来的问题。

  • Docker是诸多容器编排技术的基础

基于容器技术,产生了诸多类似Kerburnetes的容器编排解决方案,大大简化了大规模应用部署的复杂度。从更深的层次看,容器技术某种程度上改变了软件开发和运维的工作方式,也促进了云计算的发展。

Docker 的在不同系统上实现方式的差异

首先说明一点,之后文章中关于Docker隔离性等具体介绍中,都是针对Linux中Docker的实现方式,Windows、mac OS等系统的可能完全不一致,不在之后的具体讨论中涉及。

  • Docker 在Linux和Windows的差别:

    • Docker在Linux上是基于进程实现,一个Docker Container 对应一个受Cgroups和Namespace限制的宿主机进程
    • Docker在Windows上的实现方式比较特殊,Docker发行之初,是先在Windows启动一个Linux虚拟机,再在这个虚拟机中运行Docker,而目前Docker在Windows系统中一般基于Hyper-V虚拟接口实现。
  • Docker 在不同的Linux发行版中的存储方案的差别:

    • Docker 在不同的发行版中使用不同的镜像存储方案,在Ubuntu 16.04 基于AuFS实现,到了Ubuntu 18.04 变成了overlayfs, 而在CentOS中是基于devicemapper实现。

之后的文章主要详细讨论Linux中Docker的隔离、存储的具体实现方式。

猜你喜欢

转载自blog.csdn.net/weixin_42749767/article/details/82991621
今日推荐