已创建 Docker 容器进程未列出

Created Docker Container process not getting listed

已创建 Docker 容器进程未显示使用命令 docker ps --all

我在一个目录中只创建了一个Docker文件,并且是目录中的一个可用文件。

Docker文件包含以下行:

# Use an existing docker image as a base
FROM alpine

# Download and install a dependency
RUN apk add --update redis

# Tell the image what to do when it starts
# as a container
CMD ["redis-server"]

保存名为“Dockerfile”且没有任何扩展名的文件后,我只是执行使用 docker build .

构建的命令

日志如下:

Sending build context to Docker daemon  2.048kB
Step 1/3 : FROM alpine
 ---> a24bb4013296
Step 2/3 : RUN apk add --update redis
 ---> Using cache
 ---> 218559ae3e9b
Step 3/3 : CMD ["redis-server"]
 ---> Using cache
 ---> fc607b62e266
Successfully built fc607b62e266
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.

因此,如上所述,您可以看到容器映像进程已成功构建,但仍然无法使用 docker ps --all 命令显示容器。

好吧,我正在使用 Windows 10 x64 OS 并确保没有防病毒软件或防火墙阻止此 docker。我在这里遗漏了什么或犯了什么错误吗?

docker ps 的工作方式类似于 unix 命令 ps。它没有显示 可能 是 运行 的所有 docker 图像。它仅显示 运行 宁(或 -a 已经 docker 的容器运行).

您已经构建了一个 docker 图像,但您还没有 运行 使用 docker run

尝试docker run --rm -it fc607b62e266,如果一切设置正确,它应该会启动您的 redis 服务器。 (--rm 停止时删除容器 运行ning,通常是一个很好的做法,除非您希望它持续存在)。

您将在 docker images 的输出中看到您的新图像,而不是 container,因为它尚未实例化。添加一个 -t 标志为您的 docker build 命令添加一个标签,您将在该名称下看到它,否则,您始终可以使用图像参考。

一个容器只会 运行 当它的底层“根进程”是 运行ning 时。当 运行 启动像 redis-server 这样的服务时,这意味着容器将 运行 直到发出信号(docker 服务重启、系统重启或 docker kill)。

虽然 运行ning,但是 docker exec 可以在容器内执行更多进程。这些中的每一个都是一个单独的进程,但所有这些都将在“根进程”结束时终止。当然,反之则不然——结束 execed 进程不会影响“根进程”。