Docker错误响应:守护程序:“冲突…已被容器使用”
Docker错误响应:守护程序:“冲突…已被容器使用”
我一直在我的电脑上使用Docker来运行Quantum GIS,使用了我在这里找到的以下指令:docker-qgis-desktop - 一个简单的Docker容器,用于运行QGIS桌面版\n一切都一直运行得很好,直到上周开始出现以下错误信息:\n
\n
守护程序的错误响应:冲突。 名称“qgis-desktop-2-4”已被容器235566ae17b8使用。 您必须删除(或重命名)该容器才能重新使用该名称。\n
\n尽管我在这个网站上寻找线索,但我并不完全确定这是什么意思。在此之前,我没有改变任何东西,并且一直成功地使用以下命令启动容器:\n
sudo docker run --rm --name="qgis-desktop-2-4" -i -t -v ${HOME}:/home/${USER} -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY kartoza/qgis-desktop:latest
\n我该如何解决这个问题?
Docker错误响应来自守护程序:“Conflict ... already in use by container”的出现原因是容器冲突,即要创建的容器的端口或名称与现有容器冲突。解决方法是删除所有未使用的容器,可以使用以下命令批量删除:
docker container prune
如果想要强制删除而不进行提示,可以添加`-f`参数。如果只是想列出所有未使用的容器而不进行删除,可以使用以下命令:
docker container ls -a --filter status=exited --filter status=created
还可以参考这里获取有关如何清理其他对象(网络、卷等)的更多示例。另外,`docker ps -a`命令也可以列出所有容器,正如mortensen在上面提到的。
Docker错误回应:“Daemon - 冲突...已被容器使用”问题的原因和解决方法
当我们使用命令docker run
时,如果容器已经存在,就会出现上述错误。解决方法是使用docker start **CONTAINER ID**
命令启动容器。
点击此处查看更多信息。
对于我个人来说,使用docker start
命令无法启用主机网络、挂载卷等其他必要选项。因此,我需要先删除(清理)容器,然后再运行。
当我使用docker start <myContainerName>
命令重新建立所有暴露的端口和挂载的卷时,根据初始运行容器的设置,这些设置应该会与docker start
命令一起解决。
这种情况有点让人不爽,因为我希望它能同时适用于加入团队的开发人员和之前运行过容器的开发人员。这并不是很幂等 :(. 哎,我猜我不得不在bash脚本中加入一些逻辑判断。
Docker错误响应守护程序:“已存在于容器中的冲突…”问题的原因是系统中已经存在一个名为qgis-desktop-2-4的容器。可以使用以下命令的输出来确认是否确实存在该容器:$ docker ps -a
上述命令的输出中的最后一列是容器的名称。如果容器存在,则可以使用以下命令删除它:$ docker rm qgis-desktop-2-4
或者使用强制删除:$ docker rm -f qgis-desktop-2-4
然后尝试创建一个新的容器。但是,在删除第一个容器后,您遇到了以下错误消息:groupadd: GID '0' already exists useradd: user 'root' already exists No protocol specified Warning: qgis.bin: cannot connect to X server unix:0.0
看起来镜像试图创建名为root的用户和root组,而实际上这两者已经存在。Docker使用root:root作为默认的用户和组。但是当您删除第一个容器后,第一个问题就解决了。奇怪的是,为什么一开始它能正常工作,比如3-4个月。你有什么办法来解决这个问题吗?!如何重新启动现有容器而不是杀死旧容器并再次使用相同的名称来调用?docker restart
或docker stop
和docker start
应该可以帮助您。"上述命令的输出中的最后一列是容器的名称"这个信息非常有用。我之前忽略了检查并且一直认为它不存在。