如何检查已停止的Docker容器文件

6

步骤1:

docker ps -a

容器ID:dd5cf6b519b4

我需要检查无法启动的停止状态的Docker容器内部。

我尝试使用docker exec -it 容器ID bin/bash,但这是用于正在运行的容器。


您可以使用Docker日志 https://docs.docker.com/engine/reference/commandline/logs/。 - sepideh_ssh
谢谢您的回复。我需要查看文件和文件夹路径。在Docker日志中,我没有得到这些信息。 - Athithanambi Anna Anban
然后,您可以使用卷来持久化由Docker容器生成和使用的数据。 - sepideh_ssh
我没有使用任何音量配置。这是为了API部署。 - Athithanambi Anna Anban
2个回答

10
$ docker ps -a

CONTAINER ID   IMAGE   COMMAND     CREATED         STATUS                    NAMES
0dfd54557799   ubuntu  "/bin/bash" 25 seconds ago  Exited (1) 4 seconds ago  peaceful_feynman

Commit the stopped image
$ docker commit 0dfd54557799 debug/ubuntu

now we have a new image
$ docker images
REPOSITORY    TAG     IMAGE ID       CREATED         SIZE  
debug/ubuntu  <none>  cc9db32dcc2d   2 seconds ago   64.3MB

create a new container from the "broken" image
$ docker run -it --rm --entrypoint sh debug/ubuntu


inside of the container we can inspect - for example, the file system
$ ls /app    
App.dll
App.pdb
App.deps.json

使用 docker commit 命令创建一个已停止容器的新镜像是一个有用的提示 :-) 谢谢! - Peter T.
使用 docker images(等同于 docker image list)命令来显示新的镜像,参见 https://dev59.com/EVIH5IYBdhLWcg3wb97W#59640012。 - Peter T.

5
您可以使用特定的入口点启动容器。
docker run --entrypoint sleep YOUR_IMAGE 3600

这将会阻塞当前终端3600秒。您可以打开一个新的终端标签页(不要关闭当前终端),并使用以下命令验证您的容器是否在运行:

docker ps

如果您不想阻止当前终端,可以在docker run命令中添加-d标志:

docker run -d --entrypoint sleep YOUR_IMAGE 3600

上述命令将启动 Docker,但不会执行任何操作。当 Docker 运行时,您可以使用 SSH 登录容器。
docker exec -ti CONTAINER HASH sh

docker run --entrypoint sleep <我的镜像> 3600这个命令没有启动我的容器。 - Athithanambi Anna Anban
啊,你的容器正在运行。你可以打开一个新的终端选项卡,并使用 docker ps 命令进行验证。然后在新的选项卡中,你可以执行 docker exec ... 命令。由于 sleep 3600 命令不会返回任何输出,所以你看不到任何日志。它只是等待1小时。我已经更新了答案以澄清这一点。 - Daniel Hornik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接