Docker: Error response from daemon: Conflict. The container name “/basexhttp” is already in use by container

129次阅读
没有评论

问题描述

在创建和运行Docker容器时遇到了一个问题。他按照文档中的指导创建了一个名为basexhttp的容器,但在运行第二个命令时,出现了一个错误提示,指出容器名已经被另一个容器使用了。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

根据错误提示,你正在尝试创建两个不同的容器,但它们的名称相同。每次执行docker run命令时,都会创建一个容器,而你使用了相同的名称--name basexhttp。这些名称必须是唯一的,即使是在已停止的容器中也是如此。要删除不需要的容器,你可以使用以下命令停止并删除它:

docker container stop basexhttp
docker container rm basexhttp

请注意,docker stopdocker rm命令也可以使用,但使用更详细的语法更易于阅读和理解。

方案2

如果你只是想重新使用相同的容器名称,而不是创建一个新的容器,你可以先删除已经存在的容器,然后再运行第二个命令。使用以下命令删除容器:

docker container stop basexhttp
docker container rm basexhttp

然后再运行第二个命令即可。

方案3

如果你想保留第一个容器,并且只是想为第二个容器使用不同的名称,你可以在第二个命令中指定一个不同的容器名称,例如:

docker run -ti --name basexhttp2 --publish 1984:1984 --publish 8984:8984 --volume "$(pwd)/basex/data":/srv/basex/data basex/basexhttp:latest

在上面的示例中,我们将第二个容器的名称更改为basexhttp2,以避免与第一个容器名称冲突。

方案4

如果你想同时运行两个具有相同名称的容器,你可以使用不同的容器名称,并将它们放在不同的Docker网络中。这样可以避免名称冲突。以下是一个示例命令:

docker network create network1
docker network create network2
docker run -d --name basexhttp --network network1 basex/basexhttp:latest
docker run -d --name basexhttp2 --network network2 basex/basexhttp:latest

在上面的示例中,我们创建了两个不同的Docker网络network1network2,然后分别在这两个网络中运行了两个具有相同名称的容器basexhttpbasexhttp2
请根据你的实际需求选择适合的解决方案。

正文完