在执行docker run
指令后,Docker会启动一个新的容器实例。这个过程中会涉及多个进程和组件的交互,以下是docker run
指令执行后生成的主要进程和组件:
1、Docker Daemon(守护进程):
- Docker Daemon是Docker的后台服务,长期运行并管理Docker容器、镜像、网络和卷等资源
- 当执行
docker run
指令后,客户端(CLI或其他Docker API调用者)会向 Docker Daemon发送请求
2、Docker Containerd:
- Docker Containerd 是Docker Daemon 的一部分,它负责容器的生命周期管理,如创建、启动、停止、删除容器
- 当 Docker Daemon接受到
docker run
请求后,它会调用 Docker Containerd来创建和启动容器
3、Docker Containerd-Shim:
- Docker Containerd-Shim 是一个轻量级的进程,它作为容器运行时和 Docker Containerd 之间的中介
- 每个容器都会有一个与之关联的 Docker Containerd-Shim进程,它负责监听容器的状态变化,并将这些变化报告给 Docker Containerd
4、容器内进程:
- 当容器启动时,它会根据 Dockerfile 中的
CMD
或ENTRYPOINT
指令来运行一个或多个进程 - 这些进程是容器内的主要工作载体,它们执行容器所需的任务
综上所述:在Linux系统中,你开始使用
ps
或docker top
命令来查看容器内的进程列表。这些命令会显示容器内正在运行的进程及相关信息。
需要注意的是:Docker使用率Linux内核特性(如cgroups和namespacess)来实现进程隔离和资源限制,因此容器内的进程和宿主机上的其他进程是相互隔离的