Docker 组件基本介绍

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker 组件基本介绍相关的知识,希望对你有一定的参考价值。

参考技术A 供用户使用的命令行工具,负责请求 docker API 与 dockerd 交互,使得用户可以便捷友好的操作 docker。

监听 Docker API 请求,通过 containerd 管理 container 生命周期。

dockerd 通过 unix、tcp、fd 三种类型方式来接收 API 请求。默认的 unix socket 创建在 /var/run/docker.sock ,启动 dockerd 需要 root 权限或者 docker group 权限。

dockerd 在启动的时候会拉起 containerd,并与 containerd 保持通信。

<pre data-tool="mdnice编辑器" style="margin: 10px 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.54902) 0px 2px 10px;">`$ ps aux | grep dockerd

/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock` </pre>

containerd 的主要职责是管理容器的生命周期,此外它还做:

containerd 包含一个暴露 gRPC API 的 daemon 服务,这些 API 比较底层,为了被更好层调用,或者基于此做扩展。Docker 有很好的分层机制, containerd 不会直接被用户使用, 自己也是通过 runc 去运行容器。

containerd 拥有很强的适配性,其已是事实上的工业标准。containerd 通过 UNIX socket 对外暴露 gRPC API 。通过 containerd 的启动命令,可以很轻易的找到 sokcet 文件的具体位置。

/usr/bin/docker-runc 可以视作 containerd 的一部分,它是一个运行遵从 OCI 标准容器的二进制工具。容器镜像通过 OCI 标准的格式打包,通常包括一个 config.json 文件和系统根目录。

config.json 文件具体都记录了点什么呢?主要字段包括:

containerd-shim 的存在使得 container 可以脱离 containerd 独立运行。(默认的,停掉 dockerd,container 也停止了,但可以通过 daemon.json 配置实现 dockerd 停掉后,container 照常运行。)

作为 container 的父进程,container-shim 主要负责如下职责:

当我们启动 docker 后, dockerd 会默认拉起 containerd

假使我们运行一个 container ,这时就会看到 containerd-shim

调用顺序是 dockerd --> containerd --> container-shim --> "sleep 60"
原文链接: https://github.com/Wang-Kai/cherish-today/issues/145

以上是关于Docker 组件基本介绍的主要内容,如果未能解决你的问题,请参考以下文章

虚拟化+docker概念基本介绍

Docker技术知识点总纲

客快物流大数据项目:Docker与虚拟机的形象比喻及组件介绍

docker组件介绍

Docker——使用docker工具管理软件/组件的运行,镜像容器数据卷的基本概念,常用指令,使用docker搭建Java微服务运行环境

Docker——使用docker工具管理软件/组件的运行,镜像容器数据卷的基本概念,常用指令,使用docker搭建Java微服务运行环境