docker - 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 容器。
到底是怎么回事?
解决方案
我看到 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)
推荐阅读
- java - 如何从某种类型的 List 中获取 Jackson TypeReference
? - amazon-web-services - 工作人员任务提取的 AWS Step Functions 活动状态超时配置
- python - Installing local package with pip install . doesn't work without -e flag
- python - 将消息从谷歌云功能传递到虚拟机
- javascript - Angular - 查询参数可以在导航中包含编码的“,”逗号字符吗?
- google-sheets - 为什么我的 Google 表格查询无法将公式结果识别为数字?
- c# - 将图像插入 OpenXML 段落
- php - 如何在 Laravel 中使用 HTTP 请求的删除方法通过外部 Api 库删除项目
- javascript - 赛普拉斯响应的条件检查
- django - 如何在应用程序内为 django 独立应用程序提供翻译?