web-dev-qa-db-fra.com

Réponse d'erreur de Docker du démon: "Conflit ... déjà utilisé par conteneur"

J'utilise Docker pour exécuter Quantum GIS en suivant les instructions que j'ai trouvées ici: docker-qgis-desktop - Un simple conteneur Docker qui exécute QGIS Desktop

Tout fonctionnait bien jusqu'à la semaine dernière, lorsque j'ai commencé à recevoir ce message d'erreur:

Réponse d'erreur du démon: Conflict. Le nom "qgis-desktop-2-4" est déjà utilisé par le conteneur 235566ae17b8. Vous devez supprimer (ou renommer) ce conteneur pour pouvoir réutiliser ce nom.

Je ne suis pas tout à fait sûr de ce que cela signifie malgré la recherche d’indices sur ce site. Je n'avais rien changé avant que cela se produise et j'ai lancé le conteneur avec succès avec cette commande:

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

Comment puis-je réparer cela?

62
marty_c

Il semble qu'un conteneur portant le nom qgis-desktop-2-4 existe déjà dans le système. Vous pouvez vérifier le résultat de la commande ci-dessous pour confirmer son existence:

$ docker ps -a

La dernière colonne de la sortie de la commande ci-dessus concerne les noms.

Si le conteneur existe, supprimez-le en utilisant:

$ docker rm qgis-desktop-2-4

Ou en utilisant avec force,

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

Et essayez ensuite de créer un nouveau conteneur.

127
Dharmit

Pour les personnes qui débarquent ici de google comme moi et qui souhaitent créer des conteneurs à l’aide de plusieurs fichiers composés avec un seul service partagé:

Parfois, vous avez différents projets à partager, par exemple. un conteneur de base de données. Seul le premier lancement doit démarrer DB-Docker, le second doit détecter que le DB est déjà en cours d'exécution et l'ignorer. Pour obtenir un tel comportement, il faut que les Dockers soient dans le même réseau et dans le même projet. De plus, le nom du conteneur docker doit être identique.

1st: Définir le même réseau et le même nom de conteneur dans docker-compose

docker-composer dans le projet 1:

version: '3'

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

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

networks:
    dockernet:

docker-compose dans le projet 2:

version: '3'

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

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

networks:
    dockernet:

2nd: Définissez le même projet en utilisant -pparam ou placez les deux fichiers dans le même répertoire.

docker-compose -p {projectname} up

1
Karl Adler