Docker 对于 Mac。 docker 运行 -d -p 80:80 --name webserver nginx 显示另一个同名的容器。但是 docker ps 显示空列表

Docker for Mac. docker run -d -p 80:80 --name webserver nginx shows another container with this name. but docker ps shows empty list

我在学习"Docker for Mac"

$ docker run -d -p 80:80 --name webserver nginx

docker:来自守护程序的错误响应:冲突。名称“/webserver”已被容器 728da4a0a2852869c2fbfec3e3df3e575e8b4cd06cc751498d751fbaa75e8f1b 使用。您必须删除(或重命名)该容器才能重用该名称..

但是当我 运行

$ docker ps

它显示没有列出任何容器。

但是由于之前的错误信息告诉我有这个容器728da....

我删除了那个容器

$ dockder rm 728da4a0a2852869c2fbfec3e3df3e575e8b4cd06cc751498d751fbaa75e8f1b

现在我运行再说一遍

$ docker run -d -p 80:80 --name webserver nginx

这次运行良好。

然后我 运行 $ docker ps,我可以看到这个新容器已列出

$ docker ps

容器 ID 图像命令创建的状态端口名称

3ecc0412fd31 nginx "nginx -g 'daemon off" 19秒前 上升17秒 0.0.0.0:80->80/tcp, 443/tcp webserver

注:

我正在使用 "Docker for Mac"。

但我之前在 Mac 上安装了 "Docker Box"。不知道是不是那个看不见的"webserver"容器来的

正如activatedgeek在评论中所说,容器一定已经停止了。 docker ps -a 显示停止的容器。停止的容器仍然保留名称,以及它们的 RW 层的内容,显示对正在使用的 RO 图像所做的任何更改。您可以按名称或容器 ID 引用容器,这样可以更轻松地键入和编写脚本。 docker start webserver 会重新启动旧容器。 docker rm webserver 将删除具有该名称的已停止容器。

您还可以将容器 ID 缩写为最短的唯一名称以节省输入或使用长 copy/paste。因此,在您的示例中,docker rm 728d 也会删除容器。

Docker 入门文档要求学员首先尝试两个语句。

docker run hello-world

docker run -d -p 80:80 --name webserver nginx

我想知道为什么我可以 运行

docker run hello-world

很多次,但如果我 运行

docker run -d -p 80:80 --name webserver nginx

第二次,出现名称冲突错误。很多新手也会疑惑。

在你的帮助下,我做了更多的搜索,现在我明白了

docker run hello-world,

我们没有使用 --name,在这种情况下,给出了一个随机名称,因此不会出现名称冲突错误。

谢谢!