Docker for Mac。 docker运行-d -p 80:80 – 名称webserver nginx显示带有这个名字的另一个容器。 但dockerps显示空的列表

我正在学习“Docker for Mac”

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

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

但是当我跑步

$ docker ps

它显示没有容器列出。

但由于以前的错误消息告诉我,有这个容器728da ….

我删除了那个容器

$ dockder rm 728da4a0a2852869c2fbfec3e3df3e575e8b4cd06cc751498d751fbaa75e8f1b

现在我再次运行这个声明

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

这次工作正常。

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

 $ docker ps 

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

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”容器的来源。

正如在评论中激活的那样,容器必须已经停止。 docker ps -a显示停止的容器。 停止的容器仍然保存着名称,以及RW层的内容,它显示了对所使用的RO映像所做的任何更改。 您可以通过名称或容器ID来引用容器,这可以使打字和脚本更容易。 docker start webserver将重新启动旧的容器。 docker rm webserver会删除一个名字已停止的容器。

您还可以将容器标识符缩写为最短的唯一名称以保存input或长时间复制/粘贴。 所以在你的例子中, 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

第二次,我得到了名称冲突错误。 许多初学者也会想。

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

docker run hello-world

我们没有使用–name,在这种情况下,给出了一个随机的名字,所以不会有名称冲突的错误。

谢谢!