1

我看过一个和我类似的帖子,但我的有点不同。我觉得我可能做错了什么。

我在一个文件夹中创建了这个 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 上。

4

1 回答 1

0

我已经完成了以下操作,这可能会帮助您更好地调试和理解 Docker。

  1. 使用CMD而不是ENTRYPOINT. CMD基本原因是在运行新容器时能够覆盖。在此处阅读有关此实践的更多信息:Dockerfile 中的 CMD 和 ENTRYPOINT 有什么区别?. 所以,我改变了你Dockerfile的一点......

    entrypoint ["/bin/sh","-c"]
    cmd ["alpr"]
    
  2. 再次建立你的形象

    docker build -t openalpr .
    
  3. 像这样运行一个新容器:

    docker container run -itd --rm --name=foocontainer openalpr bash
    

    解释:--rm容器将在退出后被移除,bash覆盖CMDDockerfile 中提供的内容。只要它CMD运行,容器就会启动。在您的情况下,alpr失败并且容器退出。现在它将保持不变。

  4. 如果容器已启动,您可以“进入”以键入如下命令:

    docker container exec -it foocontainer bash
    

从现在开始,您将能够运行alpr并查看为什么它会在没有停止容器的情况下失败。

我希望我能有所启发...... :-)

于 2017-10-23T10:19:31.980 回答