Kubernetes 正在弃用 Docker 作为 CRI 引擎。现在有 containerd 和 CRI-O,它们可以作为它的替代品。两者都可以通过 cri-tools 中的 crictl 进行管理。
我需要一些常用的方法来找到正在运行的容器的 PID。
其实我需要一个批判性思维相当于docker命令:
# docker inspect 86cd8d605c2da -f '{{ .State.Pid }}'
9625
答案1
正如我在评论部分提到的那样,为了实现你需要使用中国国际广播电台您也可以使用inspect
命令。
获取容器PID的步骤
- 列出要获取的容器
Container ID
。
$ crictl ps
CONTAINER IMAGE CREATED STATE NAME ATTEMPT POD ID
cdb3feac5bdd3 35c43ace92162 3 minutes ago Running nginx 0 940b5d97fb46a
0d84f965a1c8d 6266988902813 29 minutes ago Running prometheus-to-sd 0 11dad991a79e4
437c1e31d5ff1 ccbe64d6d9477 29 minutes ago Running metadata-agent-nanny 0 74cbad8857254
- 检查特定容器
$ crictl inspect cdb3feac5bdd3
{
"status": {
"id": "cdb3feac5bdd3981d58fb3cd2fc08cf53bbff326a38c95a77e7ec43a80fa9713",
"metadata": {
"attempt": 0,
"name": "nginx"
在下面的部分,您将能够找到这个容器PID
。
"info": {
"sandboxID": "940b5d97fb46a3c6efdf256f751cab3f3a282150efd4cdef969692d03deb4829",
"pid": 15701,
以上(默认)输出是Go-Template
格式(您也可以选择YAML
或JSON
格式化)。
$ crictl inspect
NAME:
crictl inspect - Display the status of one or more containers
OPTIONS:
--output value, -o value Output format, One of: json|yaml|go-template|table
为了获得您需要的信息,您只需要指定path
此信息。
$ crictl inspect --output go-template --template '{{.info.pid}}' cdb3feac5bdd3
15701
解决方案
使用以下命令来containerID
获取容器PID
。
$ crictl inspect --output go-template --template '{{.info.pid}}' <yourContainerID>