我看过一个类似于我的帖子,但我的情况有点不同。我觉得我可能做错了什么。
我在文件夹中创建了this Dockerfile。然后在那个文件夹中:
docker build -t openalpr https://github.com/openalpr/openalpr.git
一切顺利:docker images
。
创建容器:
docker create --name foocontainer <IMAGE>
现在,docker container ls -a
我看到了我的容器。我需要ssh到它所以我需要在附加之前启动? docker start <container id>
之后没有消息,所以我docker ps
我什么都没看到。我需要docker attach <container id>
所以我可以运行bash
命令。有帮助吗?我在Mac上。
答案 0 :(得分:0)
我已经完成了以下操作,可以帮助您更好地调试和理解Docker。
使用CMD
代替ENTRYPOINT
。基本原因是在运行新容器时能够覆盖CMD
。在此处阅读有关此做法的更多信息:What is the difference between CMD and ENTRYPOINT in a Dockerfile?。所以,我已经改变了你的Dockerfile
......
entrypoint ["/bin/sh","-c"]
cmd ["alpr"]
再次构建您的影像
docker build -t openalpr .
像这样运行一个新容器:
docker container run -itd --rm --name=foocontainer openalpr bash
解释:退出后将删除--rm
容器,bash
会覆盖Dockerfile中提供的CMD
。 只要此CMD
运行,容器就会启动。在您的情况下,alpr
失败,容器退出。现在它会熬夜。
如果容器已启动,您可以“进入”#34;输入这样的命令:
docker container exec -it foocontainer bash
从现在开始,您将能够运行alpr
并查看在没有容器停止的情况下失败的原因。
我希望我能说清楚......: - )