我有一个在docker容器中运行的任务。我只想要一个实例在运行,所以我给容器命名。偶尔我需要修改代码或配置,因此我会重建镜像,然后停止并重新启动带有新镜像的容器。我一直在执行docker stop
然后是docker run
。
最近,我尝试将它们合并为一个步骤:
docker stop my-container && docker rm my-container && docker run --name my-container my-image
这似乎有效,但我想知道是否存在更好的方法来停止并重新启动容器?
docker stop myTask &&
docker run --rm -d myTask myImage:$VERSION
然而,这会出现以下错误:
然后我尝试添加一个docker: Error response from daemon: Conflict. The container name "/myTask" is already in use by container "49d806e25655a5e6f5309cc5509b54a10b4f0c84e60fad39856777881c99e9ce". You have to remove (or rename) that container to be able to reuse that name.
docker wait
:docker stop myTask &&
(docker wait myTask || true) &&
docker run --rm -d myTask myImage:$VERSION
我仍然遇到这种情况。看起来
docker wait
只等待容器停止,但不会等待其被删除。我尝试使用docker rm
,认为它一定会在容器被删除之前等待其被删除: "最初的回答"docker stop myTask &&
(docker rm myTask || true) &&
docker run --rm -d myTask myImage:$VERSION
这仍然会导致出现“容器名称“/myTask”已在使用”的错误。如何阻塞直到不存在具有给定名称的容器? 最初的回答: