首页 > 解决方案 > docker ps 和 docker images 只显示服务正在运行且可用?

问题描述

我知道stackoverflow上有很多类似的问题,但我的情况完全不同:

我有 2 个容器在 Google Cloud Platform VM 上运行。一个是普罗米修斯,另一个是格拉法纳。我确信容器已启动并正常运行,因为我可以在 Web 浏览器上访问应用程序。他们必须运行良好。

但是,在 VM 中docker ps, 或docker ps -a,甚至docker images什么都不显示:

john@monitor:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
john@monitor:~$

和这里:

john@monitor:~$ docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                    PORTS               NAMES

和这里:

john@monitor:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
john@monitor:~$

但是,当我检查进程时,我可以看到 docker 进程正在运行:

john@monitor:~$ ps aux| grep docker
root      8391  0.0  1.7 842188 66124 ?        Ssl  Jun10 194:16 dockerd --group docker --exec-root=/var/snap/docker/471/run/docker --data-root=/var/snap/docker/common/var-lib-docker --pidfile=/var/snap/docker/471/run/docker.pid --config-file=/var/snap/docker/471/config/daemon.json
root      8500  0.1  0.7 438932 29032 ?        Ssl  Jun10 379:58 containerd --config /var/snap/docker/471/run/docker/containerd/containerd.toml --log-level error
root     22058  0.0  1.1 794352 42052 ?        Ssl   2019 207:18 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
tx-deep+ 26008  0.0  0.0  14852  1036 pts/1    S+   11:14   0:00 grep --color=auto docker
root     29899  0.0  0.0 378864   924 ?        Sl   Apr16   0:17 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 9090 -container-ip 172.29.0.2 -container-port 9090
root     29906  0.0  0.0  10740  1648 ?        Sl   Apr16   6:34 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/65a898ec109fc2138afd480f7aeb0a7d2798f6771f8da4ffbbef9328c210c6a9 -address /run/containerd/containerd.sock -containerd-binary /usr/bin/containerd -runtime-root /var/run/docker/runtime-runc
root     30030  0.0  0.0 458360  3048 ?        Sl   Apr16   4:40 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 3000 -container-ip 172.29.0.3 -container-port 3000
root     30038  0.0  0.0   9332  1544 ?        Sl   Apr16   9:15 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/20aee67a2c83843af634e9d7577bddbc831cbdff0b97011d4510d0a889d6d942 -address /run/containerd/containerd.sock -containerd-binary /usr/bin/containerd -runtime-root /var/run/docker/runtime-runc
472      30057  0.4  1.1 154040 44164 ?        Ssl  Apr16 1218:42 grafana-server --homepath=/usr/share/grafana --config=/etc/grafana/grafana.ini --packaging=docker cfg:default.log.mode=console cfg:default.paths.data=/var/lib/grafana cfg:default.paths.logs=/var/log/grafana cfg:default.paths.plugins=/var/lib/grafana/plugins cfg:default.paths.provisioning=/etc/grafana/provisioning
john@monitor:~$

可以看到在 9090 和 3000 端口上运行了 docker-proxy 服务,分别是 prometheus 和 grafana 容器。

到底是怎么回事?

标签: dockergoogle-cloud-platform

解决方案


我看到 grafana 作为自己的进程运行:

472      30057  0.4  1.1 154040 44164 ?        Ssl  Apr16 1218:42 grafana-server --homepath=/usr/share/grafana --config=/etc/grafana/grafana.ini --packaging=docker cfg:default.log.mode=console cfg:default.paths.data=/var/lib/grafana cfg:default.paths.logs=/var/log/grafana cfg:default.paths.plugins=/var/lib/grafana/plugins cfg:default.paths.provisioning=/etc/grafana/provisioning

我还看到了两个 runc 进程。Docker 同时具有容器构建和运行时组件。除了 docker 之外,还有其他方法可以调用运行时引擎。

因此,这两个条目可能是您要查找的内容:

root     29906  0.0  0.0  10740  1648 ?        Sl   Apr16   6:34 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/65a898ec109fc2138afd480f7aeb0a7d2798f6771f8da4ffbbef9328c210c6a9 -address /run/containerd/containerd.sock -containerd-binary /usr/bin/containerd -runtime-root /var/run/docker/runtime-runc
root     29906  0.0  0.0  10740  1648 ?        Sl   Apr16   6:34 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/65a898ec109fc2138afd480f7aeb0a7d2798f6771f8da4ffbbef9328c210c6a9 -address /run/containerd/containerd.sock -containerd-binary /usr/bin/containerd -runtime-root /var/run/docker/runtime-runc

它们似乎以 root 身份运行,而不是以您的用户身份运行。

我不确定这些进程是如何启动的(即是否通过 docker)


推荐阅读