如何运行我创建的最新docker容器



当我调试我的Dockerfile时,我经常需要运行这两个命令:

$ docker build -t myuser/myapp:mytag - < myapp.docker # to create the container
$ docker run -i -t myuser/myapp:mytag /bin/bash       # to enter the container and see what's going on when something went wrong

("mytag"通常类似于"生产"、"测试"或"开发"。不确定我是否应该这样使用标签)

但是现在第二个命令似乎不再工作了:它启动了一个旧的容器。如果我列出所有带有$ docker images的容器,我看到我的标记容器在第三位,其他未标记的容器在它之前。如果我使用第一个容器的ID,它工作得很好,但这样做会很烦人,我将不得不每次都搜索它的ID。

我做错了什么?

您只需要启动并使用:

docker start -i #ContainerID

明确容器图像是很重要的。听起来你的标记的图像在图像列表中是第三,并且你认为只有n ID的第一个图像真的应该被标记,但它不是。这可能意味着在构建图像时存在问题。默认情况下,docker build输出是详细的,应该会显示问题所在。

作为题外话,我不完全确定您的用例,但是为开发、测试和生产使用不同容器的想法是一种反模式。整个要点是尽量减少执行环境之间的差异。在大多数情况下,您应该使用相同的映像,但提供不同的环境变量,以便根据需要为每个环境配置应用程序。但是,我相信这样做是有原因的,你可能有一个合理的理由。

我是这样用的:

run_most_recent_container() { docker exec -it `docker ps -a --no-trunc -q | head -n 1` bash; }

最新更新