使用以下命令运行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
如何防止此错误?
答案 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)
在这里我做了什么,它运作正常。
docker ps -a
docker rm name_of_the_docker_container
答案 3 :(得分:24)
你有2个选项可以解决这个问题......
使用该名称使用命令docker rm $(docker ps -aq --filter name=myContainerName)
或者
--name registry-v1
更改为--name myAnotherContainerName
您收到此错误是因为过去另一个容器使用了该容器名称(即registry-v1
)...即使该容器可能已退出(即当前未使用)。
答案 4 :(得分:16)
这是我在ubuntu 18上解决此问题的方法:
$ sudo docker ps -a
对于每个容器,请执行以下操作:
$ sudo docker stop container_ID
$ 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系统有关):
sudo docker ps -a
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)
我已通过执行以下步骤解决了该问题,希望对您有所帮助。
let myUnderLinedText = "Hello World"
let underLinedMutableString = NSMutableAttributedString(string: myUnderLinedText, attributes: titleAttributes).underline(term: myUnderLinedText)
以列出系统中的所有容器。 docker ps -a
我在使用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
您下载了docker映像文件。
现在,您使用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)