我正在关注官方的docker教程: https://docs.docker.com/get-started/part2/#build-the-app
我可以成功构建Docker镜像(在创建Dockerfile,app.py和requirements.txt之后)并查看它:
docker build -t friendlyhello .
docker ps -a
但是,它在运行时立即退出
docker run -p 4000:80 friendlyhello
我无法找到找不到原因的方法
1)" docker ps -a" - 说容器退出了 2)docker logs"容器名称"不返回有关日志的信息 3)我可以将shell附加到它上面:
docker run -p 4000:80 friendlyhello /bin/sh
但是我没有找到(grep)那里的任何日志信息(在/ var / log中) 4)使用-t和-d附加前台和分离模式没有帮助
我还能做什么?
答案 0 :(得分:2)
注意:不应该在已退出(已停止)的容器上使用docker exec(请参阅moby issue 30361)
停止的容器上的
docker logs
和docker inspect
应该仍然可以,但是docker exec确实没有。
你应该看到
Error response from daemon: Container a21... is not running
因此,对于您正在运行的图像,泊坞工检查应显示入口点和cmd,如this answer中所示。
正常行为是in this answer所描述的行为。
答案 1 :(得分:0)
我会调试一个容器,它不会通过将入口点切换到/ bin / bash来启动,或者只要我想要保持容器处于活动状态,然后单独运行每个命令/至少起点,以确保我在正确的位置,它具有必要的权限。然后我将能够看到在哪里打破
答案 2 :(得分:0)
我遇到了同样的问题...这让我发疯了。我在运行Windows 7的同时使用Docker Toolbox。我在docker events&
之前运行docker run -p 4000:80 friendlyhello
。它向我展示的无非是容器启动,然后立即退出。 docker logs <container id>
什么也没显示。
当我遇到troubleshooting page并建议删除docker计算机并重新创建它时,我正要放弃。我知道这听起来像是大锤类型的解决方案,但是这些示例似乎表明重新创建下载了最新版本。我按照显示的步骤进行了工作!如果它可以帮助任何人,我执行的步骤都是
docker-machine stop default
docker-machine rm default
docker-machine create --driver virtualbox default
现在重新创建示例文件,构建图像并运行它;
$ docker run -p 4000:80 friendlyhello
* Serving Flask app "app" (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:80/ (Press CTRL+C to quit)
在运行Docker Toolbox的情况下,我可以在http://192.168.99.100:4000/
上访问它,现在我得到了;
Hello World!
Hostname: ca4507de3f48
Visits: cannot connect to Redis, counter disabled