Ejecutar el docker
registro con el siguiente comando siempre arroja un error:
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.
¿Cómo prevenir este error?
docker ps -a
para ver todos los contenedores en este caso.docker start -a container-name
es el comando que puede usar para iniciar un contenedor que se ha creado condocker run
. Tenga en cuenta la-a
bandera que es la abreviatura de--attach
. De esta manera, el contenedor se inicia en primer plano, al igual que cuando lo usadocker run
(que ejecuta un contenedor en primer plano de forma predeterminada).docker create
crea un contenedor pero no lo ejecuta.Eso significa que ya ha comenzado un contenedor en el pasado con el parámetro
docker run --name registry-v1 ...
.Debe eliminar eso primero antes de poder volver a crear un contenedor con el mismo nombre
docker rm registry-v1
. Cuando ese contenedor todavía se está ejecutando, debe detenerlo primero antes de poder eliminarlodocker stop registry-v1
. O simplemente elija un nombre diferente para el nuevo contenedor.Para obtener una lista de contenedores existentes y sus nombres, simplemente invoque
docker ps -a
.fuente
docker rm $(docker ps -aq --filter name=myContainerName)
docker rm myContainerName
?Aquí lo que hice, funciona bien.
Paso 1: (enumera el contenedor acoplable con su nombre)
paso 2:
fuente
Solo para explicar lo que otros dicen (me tomó un tiempo entender) es que, simplemente, cuando ve este error, significa que ya tiene un contenedor y lo que debe hacer es ejecutarlo. Aunque intuitivamente
docker run
se supone que debe ejecutarlo, no lo hace. El comandodocker run
se usa solo para INICIAR un contenedor por primera vez. Para ejecutar un contenedor existente, lo que necesita esdocker start $container-name
. Demasiado para pedirles a los desarrolladores que creen comandos significativos / intuitivos.fuente
Tienes 2 opciones para arreglar esto ...
Elimine el contenedor anterior con ese nombre, con el comando
docker rm $(docker ps -aq --filter name=myContainerName)
O
--name registry-v1
a algo como--name myAnotherContainerName
Obtiene este error porque ese nombre del contenedor (es decir,
registry-v1
) fue utilizado por otro contenedor en el pasado ... a pesar de que ese contenedor puede haber salido, es decir (actualmente no está en uso).fuente
Cuando está creando una nueva imagen, a menudo desea ejecutar un nuevo contenedor cada vez y con el mismo nombre. Encontré que la forma más fácil era iniciar el contenedor con la opción --rm :
p.ej
Lamentablemente, se usa casi al azar en los ejemplos de los documentos
fuente
--rm
. No se reinicia--rm
solo funciona si ha creado el contenedor usando la--rm
bandera. Esto significa que si creó el contenedor sin la--rm
bandera, tendrá que eliminarlo manualmente antes de poder aprovechar larm
bandera.Porque
Todavía existe un contenedor con el mismo nombre.
Solución
Para reutilizar el mismo nombre de contenedor, elimine el contenedor existente:
Explicación
Los contenedores pueden existir en los siguientes estados, durante los cuales el nombre del contenedor no se puede usar para otro contenedor:
created
restarting
running
paused
exited
dead
Puede ver los contenedores en
running
estado usando:Para mostrar contenedores en todos los estados y averiguar si se toma un nombre de contenedor, use:
fuente
Así es como resolví esto en ubuntu 18:
$ sudo docker ps -a
Para cada contenedor hacer:
$ sudo docker stop container_ID
$ sudo docker rm container_ID
fuente
Puede eliminarlo con el comando
sudo docker rm YOUR_CONTAINER_ID
y luego ejecutar un nuevo contenedor consudo docker run ...
; o reiniciar un contenedor existente consudo docker start YOUR_CONTAINER_ID
fuente
He resuelto el problema siguiendo estos pasos y espero que ayude.
docker ps -a
para enumerar todos los contenedores en su sistema.docker rm --force name_of_container
Tuve problemas para usar NIFI y lo eliminé y reinstalé con Docker. Buena suerte.
fuente
Estoy aprendiendo docker y esto también me atrapó. Ya detuve el contenedor con ese nombre y, por lo tanto, pensé que podría ejecutar un nuevo contenedor con ese nombre.
No es el caso. El hecho de que el contenedor esté detenido no significa que no pueda iniciarse de nuevo, y mantiene los mismos parámetros con los que se creó (incluido el nombre).
cuando corrí
docker ps -a
fue cuando vi todos los contenedores de prueba ficticios que creé mientras jugaba.No hay problema, ya que no quiero esos más que acabo de hacer,
docker rm containername
en ese momento se permitió que mi nuevo contenedor se ejecutara con el nombre anterior.Ah, y ahora que termino de escribir esta respuesta, veo el comentario de Slawosz sobre la respuesta de Walt Howard que sugiere el uso de
docker ps -a
fuente