后台 docker 容器在哪里运行? (MacOS)

问题描述

我对 Docker 和 Linux 有点陌生。我想知道“在后台运行”对于容器意味着什么,因为我找不到与后台 RUNNING 容器相关的进程。

我在 docker 上运行 htop 过滤并启动了 2 个容器:

  1. docker run Nginx --> 正如我所料,一个进程出现在 htop(启动它的 shell 的子进程)
  2. docker run -d Nginx --> 这里什么都没有出现(容器正在运行)

我找不到任何解释(我可能只是没有寻找我应该在哪里......)。这里发生了什么?

编辑:

我最终发现了像往常一样存在于我的椅子和键盘间的“问题”:我在 macOS 上运行一个无头 linux VM,但我没有想到(直到现在(╬ಠ益ಠ )) 我没有在虚拟机上启动我的命令,而是直接在我的主机操作系统上启动。

因此,macOS 上的 docker 在底层使用了自己的 linux VM,而我的 htop 命令只列出了链接到打开的“主机”终端的那个...

How to retrieve docker container name from pid of docker exec on the host (MacOS)

解决方法

Docker 容器归根结底只是进程。不过容器也有可能死掉。

如果你执行 docker run -d nginx,它会打印出一个很长的十六进制字符串。那是新容器的 ID。您可以运行 docker logs <container-id> 来获取日志,例如docker logs 123456。您不需要整个 ID,只需前几个字符即可。

您可以使用 docker ps 查看正在运行的容器,并使用 docker ps -a 查看所有容器(活着的和死掉的)。