web-dev-qa-db-fra.com

docker run -> 'name est déjà utilisé par le conteneur'

L'exécution du registre docker avec la commande ci-dessous génère toujours une erreur:

dev:tmp me$ docker run \
     -d --name registry-v1 \
     -e SETTINGS_FLAVOR=local \
     -e STORAGE_PATH=/registry \
     -e SEARCH_BACKEND=sqlalchemy \
     -e LOGLEVEL=DEBUG \
     -p 5000:5000 \
     registry:0.9.1
Error response from daemon: Conflict. The name "registry-v1" is already in use by container f9e5798a82e0. You have to delete (or rename) that container to be able to reuse that name.

Comment prévenir cette erreur?

291
Rubytastic

J'ai aussi été dérouté par cela. Il y a deux commandes pertinentes ici:

docker run Exécuter une commande dans un conteneur nouvea

docker start Démarrer un ou plusieurs conteneurs arrêtés

347
Walt Howard

Cela signifie que vous avez déjà démarré un conteneur dans le passé avec le paramètre docker run --name registry-v1 ....

Vous devez d'abord le supprimer avant de pouvoir recréer un conteneur portant le même nom avec docker rm registry-v1. Lorsque ce conteneur est toujours en cours d'exécution, vous devez d'abord l'arrêter avant de pouvoir le supprimer avec docker stop registry-v1. Ou choisissez simplement un nom différent pour le nouveau conteneur.

Pour obtenir une liste des conteneurs existants et leurs noms, appelez simplement docker ps -a.

149
h3nrik

Voici ce que j'ai fait, ça marche bien.

étape 1: (il liste le conteneur docker avec son nom)

docker ps -a

étape 2:

docker rm name_of_the_docker_container
104

Vous avez 2 options pour résoudre ce problème ...

  1. Supprimer le conteneur précédent en utilisant ce nom, avec la commande docker rm $(docker ps -aq --filter name=myContainerName)

    OR

  2. Renommez le conteneur actuel en un autre nom, c.-à-d. Changez cette partie --name registry-v1 en quelque chose comme --name myAnotherContainerName

Vous obtenez cette erreur parce que le nom du conteneur (i.e registry-v1) a été utilisé par un autre conteneur dans le passé ... même si ce conteneur a déjà quitté (c'est-à-dire qu'il n'est pas utilisé).

27
Edwin Ikechukwu

Juste pour expliquer ce que les autres disent (cela m’a pris un peu de temps), c’est que, quand on voit cette erreur, cela signifie que vous avez déjà un conteneur et que vous devez le faire fonctionner. Bien qu'intuitivement docker run soit supposé l'exécuter, ce n'est pas le cas. La commande docker run sert uniquement à START un conteneur pour la toute première fois. Pour exécuter un conteneur existant, il vous faut docker start $container-name. Voilà pour demander aux développeurs de créer des commandes significatives/intuitives.

26
mithunpaul

Lorsque vous créez une nouvelle image, vous souhaitez souvent exécuter un nouveau conteneur à chaque fois et avec le même nom. J'ai trouvé le moyen le plus simple de démarrer le conteneur avec l'option - rm :

--rm        Automatically remove the container when it exits

par exemple.

docker run --name my-micro-service --rm <image>

Malheureusement, il est utilisé presque au hasard dans les exemples de docs

17
Martin

Cause

Un conteneur du même nom existe toujours.

Solution

Pour réutiliser le même nom de conteneur, supprimez le conteneur existant en:

docker rm <container name>

Explication

Les conteneurs peuvent exister dans les états suivants, durant lesquels le nom du conteneur ne peut pas être utilisé pour un autre conteneur:

  • created
  • restarting
  • running
  • paused
  • exited
  • dead

Vous pouvez voir les conteneurs dans l'état running en utilisant:

docker ps

Pour afficher les conteneurs dans tous les états et savoir si un nom de conteneur est utilisé, utilisez:

docker ps -a
15
Roderick Jonsson

Vous pouvez le supprimer avec la commande Sudo docker rm YOUR_CONTAINER_ID, puis exécuter un nouveau conteneur avec Sudo docker run ...; ou redémarrez un conteneur existant avec Sudo docker start YOUR_CONTAINER_ID

10
donglei

J'apprends juste docker et cela m'a aussi. J'ai déjà arrêté le conteneur avec ce nom et par conséquent, j'ai pensé que je pourrais exécuter un nouveau conteneur avec ce nom.

Pas le cas. Le fait que le conteneur soit arrêté ne signifie pas qu'il ne peut pas être redémarré et conserve tous les paramètres avec lesquels il a été créé (y compris le nom).

quand j’ai exécuté docker ps -a, c’est à ce moment-là que j’ai vu tous les conteneurs d’essais factices que j’ai créés en jouant.

Pas de problème, puisque je ne veux plus de ceux-là, je viens de faire docker rm containername, moment auquel mon nouveau conteneur a été autorisé à fonctionner avec l'ancien nom.

Ah, et maintenant que j'ai fini d'écrire cette réponse, je vois le commentaire de Slawosz sur la réponse de Walt Howard suggérant l'utilisation de docker ps -a

4
C. Tewalt

J'ai résolu le problème en suivant les étapes et j'espère que cela aide.

  1. Tapez docker ps -a pour répertorier tous les conteneurs de votre système.
  2. Vérifiez la partie NOMS où vous avez initialisé votre conteneur de menu fixe.
  3. Puis tapez docker rm --force name_of_container
  4. Installez le conteneur de menu fixe comme vous le souhaitez.

J'ai eu un problème en utilisant NIFI et j'ai supprimé et réinstallé en utilisant docker. Bonne chance.

1
Nijat Mursali