为什么在docker stats中的pid对于许多容器都一样?

时间:2018-08-24 10:02:50

标签: docker

docker stats开始的下一个日志中,我看到很多容器的PID是相同的,为什么?

CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
e12c382d6872        mesos-slave-58      0.10%               4.473MiB / 7.718GiB   0.06%               0B / 0B             0B / 8.19kB         12
50c03cb3fdf8        mesos-slave-55      0.08%               5.469MiB / 7.718GiB   0.07%               0B / 0B             36.9kB / 94.2kB     12
add886ad371e        mesos-slave-52      0.09%               5.285MiB / 7.718GiB   0.07%               0B / 0B             184kB / 94.2kB      12
78fe107d106c        mesos-slave-49      0.08%               6.742MiB / 7.718GiB   0.09%               0B / 0B             438kB / 61.4kB      12
b48f31fd0b18        mesos-slave-46      0.16%               17.28MiB / 7.718GiB   0.22%               0B / 0B             549kB / 61.4kB      33
1702bf0b014f        mesos-slave-43      0.07%               5.301MiB / 7.718GiB   0.07%               0B / 0B             328kB / 65.5kB      12
0d25eacfd8b6        mesos-slave-40      0.10%               7.27MiB / 7.718GiB    0.09%               0B / 0B             2.13MB / 217kB      12
1b43e01ebdc1        mesos-slave-37      0.08%               4.93MiB / 7.718GiB    0.06%               0B / 0B             238kB / 61.4kB      12
6bc2d5f10851        mesos-slave-34      0.09%               6.285MiB / 7.718GiB   0.08%               0B / 0B             180kB / 4.1kB       12
2c5b6d1bd2f2        mesos-slave-31      0.08%               4.387MiB / 7.718GiB   0.06%               0B / 0B             197kB / 4.1kB       12
ad028f43b30b        mesos-slave-28      0.07%               4.23MiB / 7.718GiB    0.05%               0B / 0B             139kB / 8.19kB      12
9d2d7e466150        mesos-slave-25      0.17%               18.09MiB / 7.718GiB   0.23%               0B / 0B             2.49MB / 184kB      34
d283840d591d        mesos-slave-22      0.09%               6.789MiB / 7.718GiB   0.09%               0B / 0B             365kB / 36.9kB      12
62db3581467e        mesos-slave-19      0.08%               4.645MiB / 7.718GiB   0.06%               0B / 0B             152kB / 36.9kB      12
605c26ea1428        mesos-slave-16      0.08%               5.922MiB / 7.718GiB   0.07%               0B / 0B             537kB / 65.5kB      12
a272df5e76b3        mesos-slave-13      0.07%               4.094MiB / 7.718GiB   0.05%               0B / 0B             45.1kB / 8.19kB     12
09cd22942e62        mesos-slave-10      0.07%               5.715MiB / 7.718GiB   0.07%               0B / 0B             147kB / 36.9kB      12
e13d2d953caa        mesos-slave-7       0.12%               4.023MiB / 7.718GiB   0.05%               0B / 0B             8.19kB / 8.19kB     12
bb90f3ae407a        mesos-slave-4       0.07%               3.969MiB / 7.718GiB   0.05%               0B / 0B             418kB / 8.19kB      12
34880c013c8c        mesos-slave-1       0.07%               4.074MiB / 7.718GiB   0.05%               0B / 0B             47.9MB / 4.1kB      12

接下来是我的启动命令,其中包含一个循环,用于启动许多容器:

docker run -d --net=host --name=mesos-slave-$node_id --privileged \
            -e MESOS_IP=$PC_IP \
            -e MESOS_HOSTNAME=$PC_IP \
            -e MESOS_PORT=$node_port \
            -e MESOS_MASTER=zk://$SERVER_IP:2181/mesos \
            -e MESOS_SWITCH_USER=0 \
            -e MESOS_CONTAINERIZERS=docker,mesos \
            -e MESOS_LOG_DIR=/var/log/mesos \
            -e MESOS_WORK_DIR=/var/tmp/mesos \
            -v /var/run/docker.sock:/var/run/docker.sock \
            -v /cgroup:/cgroup \
            -v /sys:/sys \
            -v $(which docker):/usr/bin/docker \
            mesosphere/mesos-slave:1.3.0

但是如果我使用docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Name}}'

它显示:

10511, /mesos-slave-58
25155, /mesos-slave-55
29144, /mesos-slave-52
12581, /mesos-slave-49
26998, /mesos-slave-46
10444, /mesos-slave-43
25230, /mesos-slave-40
8532, /mesos-slave-37
22994, /mesos-slave-34
6443, /mesos-slave-31
20917, /mesos-slave-28
3267, /mesos-slave-25
8972, /mesos-slave-22
23268, /mesos-slave-19
28523, /mesos-slave-16
1191, /mesos-slave-13
7570, /mesos-slave-10
11568, /mesos-slave-7
17134, /mesos-slave-4
20608, /mesos-slave-1

似乎它们不同?如何理解它们?

1 个答案:

答案 0 :(得分:1)

我认为您的第一个输出中的“ pids”列是容器中的进程数,而不是任何特定进程的进程ID。还要记住,在查看该容器时,每个容器都以其自己的pid空间启动,并且您通过docker run或Dockerfile CMD启动的主进程在该容器内的进程ID 1中,其权限和承担的责任;但是在主机上,Docker容器“只是”一个带有某些封装的进程,因此它将具有不同的主机pid。