Primero obtuve mi imagen acoplable nginx:
docker pull nginxEntonces lo comencé:
docker run -d -p 80:80 --name webserver nginxEntonces lo detuve:
docker stop webserverLuego traté de reiniciarlo:
$docker run -d -p 80:80 --name webserver nginx docker: Error response from daemon: Conflict. The container name "/webserver" is already in use by container 036a0bcd196c5b23431dcd9876cac62082063bf62a492145dd8a55141f4dfd74. You have to remove (or rename) that container to be able to reuse that name.. See 'docker run --help'.Bueno, es un error. Pero, de hecho, no hay nada en la lista de contenedores ahora:
docker container list CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES¿Por qué fallé al reiniciar la imagen de nginx? ¿Como arreglarlo?
Es porque
--name .Lo encuentras detenido
docker ps -aSimplemente puede iniciarlo usando el siguiente comando:
docker start webserverEDITAR: Alternativas Si desea iniciar el contenedor con el siguiente comando cada vez,
docker run -d -p 80:80 --name webserver nginxluego use uno de los siguientes:
método 1: use el interruptor --rm , es decir, el contenedor se destruye automáticamente tan pronto como se detiene
docker run -d -p 80:80 --rm --name webserver nginxmétodo 2: elimínelo explícitamente después de detener el contenedor antes de iniciar el comando que está utilizando actualmente.
docker stop <container name> docker rm <container name>Como dice el error.
Tienes que eliminar (o renombrar) ese contenedor para poder reutilizar ese nombre
Esto te deja dos opciones.
Puede eliminar el contenedor que usa el nombre "servidor web" usando el comando
ventana acoplable rm 036a0bcd196c5b23431dcd9876cac62082063bf62a492145dd8a55141f4dfd74
y vuelva a intentarlo.
Es mejor eliminar la ventana acoplable no deseada y reutilizar el nombre.
Si bien las excelentes respuestas son correctas, en realidad no resolvieron el problema al que me enfrentaba.
La solución es envolver el comando de docker run con una verificación adicional y realizar una run o stop + run (reiniciar efectivamente con la nueva imagen) según el resultado.
Esto logra mis dos objetivos:
#!/bin/bash # Adapt the following 3 parameters to your specific case NAME=myname IMAGE=myimage RUN_OPTIONS='-d -p 8080:80' ContainerID="$(docker ps --filter name="$NAME" -q)" if [[ ! -z "$ContainerID" ]]; then echo "$NAME already running as container $ContainerID: stopping ..." docker stop "$ContainerID" fi echo "Starting $NAME ..." exec docker run --rm --name "$NAME" $RUN_OPTIONS "$IMAGE" Ahora puedo ejecutar (o detener + iniciar si ya se está ejecutando) el contenedor docker $NAME de forma idempotente, sin preocuparme por esta posible falla.