当我调试我的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; }