docker restart容器失败:"已经在使用中",但是没有更多的docker镜像

Hin*_*sum 37 containers list nginx docker

我首先得到了我的nginx docker图像:

docker pull nginx
Run Code Online (Sandbox Code Playgroud)

然后我开始了:

docker run -d -p 80:80 --name webserver nginx
Run Code Online (Sandbox Code Playgroud)

然后我停了下来:

docker stop webserver
Run Code Online (Sandbox Code Playgroud)

然后我尝试重新启动它:

$docker run -d -p 80:80 --name webserver nginx
docker: Error response from daemon: Conflict. The container name "/webserver" is already in use by container 036a0bcd196c5b23431dcd9876cac62082063bf62a492145dd8a55141f4dfd74. You have to remove (or rename) that container to be able to reuse that name..
See 'docker run --help'.
Run Code Online (Sandbox Code Playgroud)

嗯,这是一个错误.但实际上现在容器列表中没有任何内容:

docker container list
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
Run Code Online (Sandbox Code Playgroud)

为什么我重启nginx图片失败了?怎么解决?

Rao*_*Rao 69

这是因为

  • 你用过--name开关.
  • 容器已停止,未被删除

你发现它停了下来

docker ps -a
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令启动它:

docker start webserver
Run Code Online (Sandbox Code Playgroud)

编辑:替代品 如果你想每次用下面的命令启动容器,

docker run -d -p 80:80 --name webserver nginx
Run Code Online (Sandbox Code Playgroud)

然后使用以下之一:

方法1:使用--rm开关即,容器一停止就自动销毁

docker run -d -p 80:80 --rm --name webserver nginx
Run Code Online (Sandbox Code Playgroud)

方法2:在启动当前使用的命令之前停止容器后显式删除它.

docker stop <container name>
docker rm <container name>
Run Code Online (Sandbox Code Playgroud)


Nee*_*raj 5

正如错误所说.

您必须删除(或重命名)该容器才能重用该名称

这给你两个选择.

  • 您可以使用该命令删除使用名称"webserver"的容器

    docker rm 036a0bcd196c5b23431dcd9876cac62082063bf62a492145dd8a55141f4dfd74

然后重试.

  • 或者您可以在运行命令期间使用其他名称.不建议这样做,因为您不再需要该docker.

最好删除不需要的docker并重用该名称.