Docker基础知识

74 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第29天,点击查看活动详情

docker引擎组件构成

  • docker客户端
  • docker守护进程
  • containerd以及runc

但并不是一开始就是这样的。

Docker首次发布时,Docker引擎由LXC和Docker daemon组成。

这里的Docker daemon 是单一的二进制文件,包含客户端、API、容器运行时、镜像构建等。

而LXC提供命名空间Namespace和控制组CGroup等基础工具等操作能力,基于Linux内核的容器虚拟化技术。

可以说,以前的Docker 是依赖于LXC的。

这里有几个问题。

  • 依赖Linux,不符合跨平台
  • 核心组件依赖外部工具,有巨大风险

所以docker公司开发了Libcontainer的自研工具,替代LXC。Libcontainer能够成为与平台无关的工具,基于不同内核提供必要的容器交互功能。

Libcontainer后来成为了默认的执行驱动。

此外,Docker daemon呈现的臃肿状态也带来很多问题。

所以需要拆解。

至今,所有容器执行和容器运行时的代码已经从daemon中移除,并重构。