当前位置: 首页>>技术教程>>正文


linux – 来自守护程序的Docker错误响应:“冲突……已被容器使用”

, ,

问题描述

我一直在PC上使用Docker来运行Quantum GIS,并遵循以下说明:docker-qgis-desktop – A simple docker container that runs QGIS desktop

一切正常,直到上周我开始收到此错误消息时:

Error response from daemon: Conflict.  The name "qgis-desktop-2-4" is already in use by container 235566ae17b8.  You have to delete (or rename) that container to be able to reuse that name. 

尽管在此站点上寻找了线索,但我不确定是什么意思。在此之前,我没有做任何更改,并且已经使用以下命令成功启动了容器:

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

我怎样才能解决这个问题?

最佳方案

看起来系统中已经存在一个名称为qgis-desktop-2-4的容器。您可以检查以下命令的输出以确认是否确实存在:

$ docker ps -a

上面命令输出中的最后一列是名称。

如果容器存在,请使用以下方法将其删除:

$ docker rm qgis-desktop-2-4

或强行使用

$ docker rm -f qgis-desktop-2-4

然后尝试创建一个新的容器。

次佳方案

代替命令:docker run

您应该使用:

docker start **CONTAINER ID**

因为该容器已经存在

More info

第三种方案

对于像我这样从Google登陆到这里的人,他们只想使用多个docker-compose文件和一个共享服务来构建容器:

有时您会共享不同的项目,例如数据库泊坞窗容器。仅第一次运行应启动DB-Docker,第二次应检测到数据库已在运行,请跳过此步骤。为了实现这种行为,我们需要Docker放置在同一网络和同一项目中。另外,docker容器名称也必须相同。

1st:在docker-compose中设置相同的网络和容器名称

项目1中的docker-compose:

version: '3'

services:
    service1:
        depends_on:
            - postgres
        # ...
        networks:
            - dockernet

    postgres:
        container_name: project_postgres
        image: postgres:10-alpine
        restart: always
        # ...
        networks:
            - dockernet

networks:
    dockernet:

项目2中的docker-compose:

version: '3'

services:
    service2:
        depends_on:
            - postgres
        # ...
        networks:
            - dockernet

    postgres:
        container_name: project_postgres
        image: postgres:10-alpine
        restart: always
        # ...
        networks:
            - dockernet

networks:
    dockernet:

第二个:使用-p param设置相同的项目,或者将两个文件放在同一目录中。

docker-compose -p {projectname} up

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9073.html,未经允许,请勿转载。