docker run - > '名称已被容器使用'

时间:2015-07-29 10:26:11

标签: docker

使用以下命令运行function setExactInterval(handler, time) { var startTime = Date.now(); setTimeout(function() { while (true) { var currentTime = Date.now(); var diff = currentTime - startTime; if (diff >= time) { setExactInterval(handler, time); return handler(); } } }, time - 50); } 注册表总是会抛出错误:

docker

如何防止此错误?

19 个答案:

答案 0 :(得分:319)

我也对此感到困惑。这里有两个相关的命令:

docker run 容器中运行命令

docker start 启动一个或多个已停止的容器

答案 1 :(得分:140)

这意味着您已经使用参数docker run --name registry-v1 ...启动了一个容器。

您需要先删除它,然后才能使用docker rm registry-v1重新创建名称相同的容器。当该容器运行时,您需要先将其停止,然后才能使用docker stop registry-v1将其删除。或者只是为新容器选择一个不同的名称。

要获取现有容器及其名称的列表,只需调用docker ps -a

答案 2 :(得分:74)

在这里我做了什么,它运作正常。

第1步:(它列出了名为docker container的容器)

docker ps -a

第2步:

docker rm name_of_the_docker_container

答案 3 :(得分:24)

你有2个选项可以解决这个问题......

  1. 使用该名称使用命令docker rm $(docker ps -aq --filter name=myContainerName)

    删除上一个容器

    或者

  2. 将当前容器重命名为其他名称,即将此部分--name registry-v1更改为--name myAnotherContainerName
  3. 您收到此错误是因为过去另一个容器使用了该容器名称(即registry-v1)...即使该容器可能已退出(即当前未使用)。

答案 4 :(得分:16)

这是我在ubuntu 18上解决此问题的方法:

  1. $ sudo docker ps -a
  2. 复制容器ID

对于每个容器,请执行以下操作:

  1. $ sudo docker stop container_ID
  2. $ sudo docker rm container_ID

答案 5 :(得分:15)

仅解释别人在说什么(花了我一些时间才能理解)是,简单地说,当您看到此错误时,它意味着您已经有一个容器,并且您必须运行它。虽然直观上应该运行docker run,但实际上不是。命令docker run第一次仅用于 START 容器。要运行现有容器,您需要docker start $container-name。这对于要求开发人员创建有意义/直观的命令来说意义重大。

答案 6 :(得分:11)

<强>原因

仍然存在具有相同名称的容器。

<强>解决方案

要重复使用相同的容器名称,请通过以下方式删除现有容器:

docker rm <container name>

<强>解释

容器可以存在以下状态,在此状态期间容器名称不能用于另一个容器:

  • created
  • restarting
  • running
  • paused
  • exited
  • dead

您可以使用以下方式查看running州的容器:

docker ps

要显示所有州的容器并查明是否采用了容器名称,请使用:

docker ps -a

答案 7 :(得分:10)

您可以使用命令sudo docker rm YOUR_CONTAINER_ID将其删除,然后使用sudo docker run ...运行新容器; 或使用sudo docker start YOUR_CONTAINER_ID

重新启动现有容器

答案 8 :(得分:10)

在构建新映像时,您经常希望每次都运行一个具有相同名称的新容器。我发现最简单的方法是使用-rm 选项启动容器:

--rm        Automatically remove the container when it exits

例如

docker run --name my-micro-service --rm <image>

可悲的是,docs

中的示例几乎随机使用了它

答案 9 :(得分:6)

问题:您试图在后台容器中创建具有相同名称的新容器,而这种情况会导致冲突。

错误如下:

无法为服务X创建冲突:冲突。容器 abc123xyz 已使用名称X。您必须先删除ot delete(或重命名)该容器,然后才能重复使用该名称。

解决方案,在 docker-compose.yml 中重命名服务名称,或删除正在运行的容器并重新构建(此解决方案与Unix / Linux / macOS系统有关):

  1. 获取所有正在运行的容器sudo docker ps -a
  2. 获取特定的容器ID
  3. 停止并删除重复的容器/强制将其删除
sudo docker stop <container_id>
sudo docker rm <container_id>

sudo docker rm --force <container_id>

答案 10 :(得分:4)

我正在学习码头工具,这也让我受益匪浅。我已经停止了具有该名称的容器,因此我认为我可以运行一个具有该名称的新容器。

不是这样的。仅仅因为容器已经停止,并不意味着它不能再次启动,并且它保留了所有与创建它相同的参数(包括名称)。

当我看到我在玩游戏时创建的所有虚拟测试容器时,我跑了docker ps -a

没问题,因为我不再需要那些我只是docker rm containername,此时我的新容器可以使用旧名称运行。

啊,现在我写完了这个答案,我看到Slawosz对沃尔特·霍华德上面的答案的评论,建议使用docker ps -a

答案 11 :(得分:3)

我已通过执行以下步骤解决了该问题,希望对您有所帮助。

  1. 键入 let myUnderLinedText = "Hello World" let underLinedMutableString = NSMutableAttributedString(string: myUnderLinedText, attributes: titleAttributes).underline(term: myUnderLinedText) 以列出系统中的所有容器。
  2. 检查已初始化Docker容器的NAMES部分。
  3. 然后输入docker ps -a
  4. 根据需要安装Docker容器。

我在使用NIFI时遇到问题,并且已使用docker删除并重新安装。祝好运。

答案 12 :(得分:2)

我遇到了这个问题,当我运行docker rm(通常有效)时,我会得到:

错误:没有此类图片

最简单的解决方案是通过运行以下命令删除所有停止的容器:

docker container prune

答案 13 :(得分:2)

TL:DR;

列出所有容器:
docker ps -a
通过ID删除相关的容器:
docker container rm <container_id>

答案 14 :(得分:1)

简单的解决方案:转到系统中的docker文件夹,然后删除.raw文件或大型docker存档。

答案 15 :(得分:0)

好吧,所以我也听不懂,然后我离开电脑,去做其他事情,回去后,它点击了:D

  1. 您下载了docker映像文件。

  2. 现在,您使用docker run,并为其命名(例如:newWebServer)。

    docker run -d -p 8080:8080 -v --name newWebServer new / webserver-image

好。因此,现在,docker run刚从您的映像创建了一个容器。如果它没有运行,您现在可以使用它的名称启动它:

docker start newWebServer

您可以通过以下方式检查所有容器(它们可能正在运行或可能未运行)

docker ps -a

您现在可以从CONTAINER ID列中以它们的名称或容器ID停止和启动它们,例如:

docker stop newWebServer

docker start c3028a89462c

并使用

列出您的所有图像
docker images -a
简而言之,下载图像; docker run从中创建一个容器;使用docker stop停止它(名称或容器ID);以docker start(名称或容器ID)启动它。

答案 16 :(得分:0)

OP的问题是错误。删除状态不是唯一的解决方案,甚至不是一个好的解决方案。问题是docker run不是可重入的,而docker start是无能的,没有run。所以我们必须将它们结合起来。

例如,要运行不破坏先前状态的Postgres,请尝试以下操作:

docker start postgres || docker run -d -p 5432:5432 --name postgres -e POSTGRES_PASSWORD=password postgres:13-alpine

答案 17 :(得分:0)

删除所有退出的容器

pip install seaborn=0.11.0

答案 18 :(得分:0)

对我来说,问题是我在 dockerfile 中多次使用了一个图像名称。

enter image description here