java高级培训-与Docker相关的重要概念

2020年10月18日 21:10

23

    Docker&LXC


    Docker的第一个执行环境是LXC,但从版本0.9开始LXC被libcontainer取代。


    Docker&Libcontainer


    Libcontainer为Docker封装了Linux提供的基础功能,如Cgroups,Namespaces,NetLink和NetFilter等,如下图所示:

java高级培训


    2015-Docker&RunC


    在2015年,Docker发布了RunC,这是一个轻量级的跨平台容器运行时。这基本上是一个命令行小工具,可以直接使用libcontainer来运行容器,而无需通过DockerEngine。RunC的目标是使标准容器在任何地方都可用。


    Docker&OCI


    OCI(TheOpenContainersInitiative)是由Docker,CoreOS和其他容器行业领导者于2015年建立的轻量级开放管理架构。它维护一些项目,例如RunC以及容器运行时规范和镜像规范。OCI的目的是围绕容器行业开发标准,例如,使用Docker创建的容器可以在任何其他容器引擎上运行。


    2016-Docker&Containerd


    2016年,Docker分拆了Containerd,并将其捐赠给了社区。将这个组件分解为一个单独的项目,使得Docker将容器的管理功能移出Docker的核心引擎并移入一个单独的守护进程(即Containerd)。


    DockerComponents


    分拆完Containerd后,Docker各组件的关系如下图所示:


java高级培训

    至此,Docker从一个单一的软件演变成了一套相互独立的组件和项目。


    Docker如何运行一个容器?


    Docker引擎创建容器映像;


    将容器映像传递给Containerd;


    Containerd调用Containerd-Shim;


    Containerd-Shim使用RunC来运行容器;


    Containerd-Shim允许运行时(本例中为RunC)在启动容器后退出;


    该模型带来的最大好处是在升级Docker引擎时不会中断容器的运行。


    2017-容器成为主流


    2017年是容器成为主流技术的一年,这就是为什么Docker在Linux之外支持众多平台(比如DockerforMac、DockerforWindows、DockerforAWS、GCP等)的原因。


    当容器技术被大众接受后,Docker公司意识到需要新的生产模型,这就是为什么它开始Moby项目。



更多鲁班学院java高级培训免费课程试听地址https://www.lubanjava.com/course.html

鲁班学院java高级培训课程https://www.lubanjava.com/course/detail/519.html

加群即可领取鲁班学院最新Java高级培训课程资料学习包 群号:700541970