如何调试Docker容器的启动?

6
我成功地构建了一个 Docker 容器。我尝试运行它,但是容器在启动时会意外退出。 我该如何检查问题出在哪里? 在 docker events 中,我可以看到以下日志:
2019-07-21T16:34:28.239785600+02:00 container create 32300daaf2e67ed935af47e9c33914ff67c678bf71b36aac1a0dcee93146da45 (image=jacob/api, name=quirky_feistel)
2019-07-21T16:34:28.444621700+02:00 network connect d6234d64d738131d14f8c951fe8067fad7bd4a0ff8a81f1b452d1a107648f95c (container=32300daaf2e67ed935af47e9c33914ff67c678bf71b36aac1a0dcee93146da45, name=bridge, type=bridge)
2019-07-21T16:34:29.070197400+02:00 container start 32300daaf2e67ed935af47e9c33914ff67c678bf71b36aac1a0dcee93146da45 (image=jacob/api, name=quirky_feistel)
2019-07-21T16:34:29.389522500+02:00 container die 32300daaf2e67ed935af47e9c33914ff67c678bf71b36aac1a0dcee93146da45 (exitCode=1, image=jacob/api, name=quirky_feistel)
2019-07-21T16:34:29.807771700+02:00 network disconnect d6234d64d738131d14f8c951fe8067fad7bd4a0ff8a81f1b452d1a107648f95c (container=32300daaf2e67ed935af47e9c33914ff67c678bf71b36aac1a0dcee93146da45, name=bridge, type=bridge)

我正在本地运行Docker,启动命令是 docker run -p 49160:8080 -d jacob/api


1
运行 docker ps -a 命令获取容器 ID,然后运行 docker logs container-id 查看日志。 - mchawre
docker ps -a 你尝试过使用 -a 选项吗? - mchawre
@mchawre 你说得对,最终我找到了问题(npm启动脚本有误)。谢谢! - lukohep
1个回答

10

调试容器的最佳方法是使用附加模式运行容器,因为您可以以两种方式运行容器。

前台: 在前台模式下,使用-it启动docker run,可以启动容器中的进程并将控制台连接到该进程的标准输入、输出和标准错误。因此,在前台模式下,您可以查看输出或者在引导过程中发生错误时进行调试。

始终使用前台模式运行容器以进行调试。

docker run -it  -p 49160:8080  jacob/api

根据文档所述

-a=[]           : Attach to `STDIN`, `STDOUT` and/or `STDERR`
-t              : Allocate a pseudo-tty
--sig-proxy=true: Proxy all received signals to the process (non-TTY mode only)
-i              : Keep STDIN open even if not attached

分离模式: 选项--detach或-d表示Docker容器在终端的后台运行。它不接收输入或显示输出。如果您想要调试,那么您需要找到容器ID,然后使用docker logs -f container_id命令。


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