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?
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.
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 -p
param ou placez les deux fichiers dans le même répertoire.
docker-compose -p {projectname} up