L'exécution du docker
registre 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 éviter cette erreur?
docker ps -a
pour voir tous les conteneurs dans ce cas.docker start -a container-name
est la commande que vous pouvez utiliser pour démarrer un conteneur qui a été créé avecdocker run
. Notez le-a
drapeau qui est un raccourci pour--attach
. De cette façon, le conteneur est démarré au premier plan, tout comme lorsque vous utilisezdocker run
(qui exécute un conteneur au premier plan par défaut).docker create
crée un conteneur mais ne l'exécute pas.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 du même nom avec
docker rm registry-v1
. Lorsque ce conteneur est en cours d'exécution, vous devez d'abord l'arrêter avant de pouvoir le supprimer avecdocker 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
.la source
docker rm $(docker ps -aq --filter name=myContainerName)
docker rm myContainerName
?Voilà ce que j'ai fait, ça marche bien.
étape 1: (il répertorie le conteneur Docker avec son nom)
étape 2:
la source
Juste pour expliquer ce que les autres disent (il m'a fallu un certain temps pour comprendre), c'est que, simplement, lorsque vous voyez cette erreur, cela signifie que vous avez déjà un conteneur et que vous devez le faire. Bien qu'il soit intuitivement
docker run
censé l'exécuter, il ne le fait pas. La commandedocker run
est utilisée pour DÉMARRER un conteneur uniquement pour la toute première fois. Pour exécuter un conteneur existant, vous avez besoin dedocker start $container-name
. Voilà pour demander aux développeurs de créer des commandes significatives / intuitives.la source
Vous avez 2 options pour résoudre ce problème ...
Supprimer le conteneur précédent en utilisant ce nom, avec la commande
docker rm $(docker ps -aq --filter name=myContainerName)
OU
--name registry-v1
en--name myAnotherContainerName
Vous obtenez cette erreur car ce nom de conteneur (c.-à-d.
registry-v1
) A été utilisé par un autre conteneur dans le passé ... même si ce conteneur peut avoir quitté c.-à-d. (Actuellement non utilisé).la source
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é que le moyen le plus simple était de démarrer le conteneur avec l' option --rm :
par exemple
Malheureusement, il est utilisé de manière presque aléatoire dans les exemples de la documentation
la source
--rm
. Il ne redémarre pas.--rm
ne fonctionne que si vous avez créé le conteneur à l'aide de--rm
flag. Cela signifie que si vous avez créé le conteneur sans l'--rm
indicateur, vous devrez le supprimer manuellement avant de pouvoir profiter de l'rm
indicateur.Cause
Un conteneur du même nom existe toujours.
Solution
Pour réutiliser le même nom de conteneur, supprimez le conteneur existant en:
Explication
Les conteneurs peuvent exister dans les états suivants, pendant 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 en
running
état en utilisant:Pour afficher les conteneurs dans tous les états et savoir si un nom de conteneur est utilisé, utilisez:
la source
Voici comment j'ai résolu cela sur Ubuntu 18:
$ sudo docker ps -a
Pour chaque conteneur:
$ sudo docker stop container_ID
$ sudo docker rm container_ID
la source
Vous pouvez le supprimer avec la commande
sudo docker rm YOUR_CONTAINER_ID
, puis exécuter un nouveau conteneur avecsudo docker run ...
; ou redémarrez un conteneur existant avecsudo docker start YOUR_CONTAINER_ID
la source
J'ai résolu le problème en suivant les étapes suivantes et j'espère que cela vous aidera.
docker ps -a
pour répertorier tous les conteneurs de votre système.docker rm --force name_of_container
J'ai eu un problème avec NIFI et j'ai supprimé et réinstallé à l'aide de docker. Bonne chance.
la source
J'apprends juste le docker et cela m'a aussi. J'ai déjà arrêté le conteneur avec ce nom et j'ai donc pensé pouvoir exécuter un nouveau conteneur avec ce nom.
Pas le cas. Ce n'est pas parce que le conteneur est arrêté qu'il ne peut pas être redémarré et il conserve tous les mêmes paramètres avec lesquels il a été créé (y compris le nom).
quand j'ai couru
docker ps -a
c'est quand j'ai vu tous les conteneurs de test factices que j'ai créés pendant que je jouais.Pas de problème, puisque je n'en veux plus, je viens de le faire,
docker rm containername
à quel point 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 ci-dessus suggérant l'utilisation de
docker ps -a
la source