如何调试docker容器的启动?

luk*_*hep 1 docker

我成功构建了一个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)
Run Code Online (Sandbox Code Playgroud)

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

Adi*_*iii 5

调试容器的最佳方式总是尝试在附加模式下运行,因为您可以通过两种方式运行容器。

前台: 在前台模式下,docker run with-it可以在容器中启动进程,并将控制台附加到进程的标准输入、输出和标准错误。因此,在前台,您可以看到输出,或者在启动期间是否出现错误。

始终在前台运行容器以进行调试。

docker run -it  -p 49160:8080  jacob/api
Run Code Online (Sandbox Code Playgroud)

作为文档解释

-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
Run Code Online (Sandbox Code Playgroud)

分离模式: 由选项 --detach 或 -d 显示,表示 Docker 容器在终端的后台运行。它不接收输入或显示输出。如果你想调试所以你必须找到容器 ID 那么docker logs -f container_id