在 Docker 中创建新容器时遇到问题。来自守护进程的错误响应:冲突。容器名称已被容器使用

use*_*139 5 macos docker

我正在 Mac 上运行 Docker 的介绍教程,但出现如下错误:

docker run -d -p 80:80 --name docker-tutorial docker101tutorial
Run Code Online (Sandbox Code Playgroud)

泊坞窗:来自守护进程的错误响应:冲突。容器名称“/docker-tutorial”已经被容器“c5a91ef51a529a00dcbef180560dc2b392f3d9ab05b8c29fa1bf640d64271de7”使用。您必须删除(或重命名)该容器才能重用该名称。请参阅“docker run --help”。

你能就这个错误提出建议——我似乎需要删除一个先前的容器?但我不相信我创造了一个。

任何人都可以就如何解决这个问题提出建议,因为我对终端不是很精通,而且是 Docker 的新手。

当我输入时docker ps -a,我得到:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
f5ed32612a0a        ubuntu              "bash"                   27 minutes ago      Exited (129) 22 minutes ago                       happy_tesla
b179c651b8d7        hello-world         "/hello"                 40 minutes ago      Exited (0) 40 minutes ago                         mystifying_rubin
c5a91ef51a52        docker101tutorial   "/docker-entrypoint.…"   42 minutes ago      Created                                           docker-tutorial
916e57976203        hello-world         "/hello"                 48 minutes ago      Exited (0) 48 minutes ago                         exciting_dewdney
Run Code Online (Sandbox Code Playgroud)

β.ε*_*.βε 6

简而言之,发生这种情况的原因是,当您命名容器(使用标志--name foo)时,您必须确保该名称在主机上的所有容器中是唯一的。

\n

然后关于你的发言:

\n
\n

您能否就这个错误提出建议 - 似乎我需要删除以前的容器?但我不相信我创造了一个

\n
\n

如果我读了你的docker ps -a输出,这是不真实的,你在 42 分钟前创建了一个,看到下面一行的最后一位吗?这是现有容器的名称docker-tutorial

\n
c5a91ef51a52        docker101tutorial   "/docker-entrypoint.\xe2\x80\xa6"   42 minutes ago      Created                                           docker-tutorial\n
Run Code Online (Sandbox Code Playgroud)\n

赶紧跑:

\n
docker rm docker-tutorial\n
Run Code Online (Sandbox Code Playgroud)\n

然后您应该可以返回教程。

\n
\n

为了完整起见,由于第一次使用时可能会出现意外,该命令docker rm将输出刚刚删除的容器的名称:

\n
$ docker rm I-do-exist                  \nI-do-exist\n
Run Code Online (Sandbox Code Playgroud)\n

如果你没有这样的命名容器,那么它会输出一个明确的错误:

\n
$ docker rm I-do-not-exist\nError: No such container: I-do-not-exist\n
Run Code Online (Sandbox Code Playgroud)\n

  • 更好的是,如果您不知道,可以通过执行“docker run -d -p 8080:80 --name docker-tutorial docker101tutorial”将容器绑定到 http 子端口:“8080”,然后在本教程的其余部分中执行,当他们指示您在浏览器中访问“localhost”时,请访问“localhost:8080” (2认同)
  • Apache 是默认安装的,您可以从用户的 /Sites 文件夹中提供站点服务。不过,这不是强制性的,据我所知,在最新版本的 MacOS 操作系统上,这不再启动 (2认同)