步骤1:
docker ps -a
容器ID:dd5cf6b519b4
我需要检查无法启动的停止状态的Docker容器内部。
我尝试使用docker exec -it 容器ID bin/bash
,但这是用于正在运行的容器。
步骤1:
docker ps -a
容器ID:dd5cf6b519b4
我需要检查无法启动的停止状态的Docker容器内部。
我尝试使用docker exec -it 容器ID bin/bash
,但这是用于正在运行的容器。
$ 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.docker run --entrypoint sleep YOUR_IMAGE 3600
这将会阻塞当前终端3600秒。您可以打开一个新的终端标签页(不要关闭当前终端),并使用以下命令验证您的容器是否在运行:
docker ps
如果您不想阻止当前终端,可以在docker run命令中添加-d
标志:
docker run -d --entrypoint sleep YOUR_IMAGE 3600
docker exec -ti CONTAINER HASH sh
docker ps
命令进行验证。然后在新的选项卡中,你可以执行 docker exec ...
命令。由于 sleep 3600
命令不会返回任何输出,所以你看不到任何日志。它只是等待1小时。我已经更新了答案以澄清这一点。 - Daniel Hornik