A execução do docker
registro com o comando abaixo sempre gera um erro:
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.
Como evitar esse erro?
docker ps -a
para ver todos os contêineres neste caso.docker start -a container-name
é o comando que você pode usar para iniciar um contêiner que foi criadodocker run
. Observe a-a
bandeira que é uma abreviação para--attach
. Dessa forma, o contêiner é iniciado em primeiro plano, exatamente como quando você usadocker run
(que executa um contêiner em primeiro plano por padrão).docker create
cria um contêiner, mas não o executa.Isso significa que você já começou um recipiente no passado com o parâmetro
docker run --name registry-v1 ...
.Você precisa excluir isso primeiro antes de recriar um contêiner com o mesmo nome
docker rm registry-v1
. Quando o contêiner estiver em execução no peitoril, você deverá primeiro pará-lo antes de poder excluí-lodocker stop registry-v1
. Ou simplesmente escolha um nome diferente para o novo contêiner.Para obter uma lista de contêineres existentes e seus nomes, basta chamar
docker ps -a
.fonte
docker rm $(docker ps -aq --filter name=myContainerName)
docker rm myContainerName
?Aqui o que eu fiz, funciona bem.
Etapa 1: (lista o container docker com seu nome)
passo 2:
fonte
Apenas para explicar o que os outros estão dizendo (demorei algum tempo para entender) é que, simplesmente, quando você vê esse erro, significa que você já tem um contêiner e o que precisa fazer é executá-lo. Embora intuitivamente
docker run
deva executá-lo, não o faz. O comandodocker run
é usado apenas para iniciar um contêiner pela primeira vez. Para executar um contêiner existente, o que você precisa édocker start $container-name
. É demais pedir aos desenvolvedores que criem comandos significativos / intuitivos.fonte
Você tem 2 opções para corrigir isso ...
Remova o contêiner anterior usando esse nome, com o comando
docker rm $(docker ps -aq --filter name=myContainerName)
OU
--name registry-v1
para algo como--name myAnotherContainerName
Você está recebendo este erro porque o nome do contêiner (ou seja
registry-v1
) foi usado por outro contêiner no passado ... mesmo que o contêiner tenha saído, ou seja (atualmente não está em uso).fonte
Quando você está construindo uma nova imagem, geralmente deseja executar um novo contêiner a cada vez e com o mesmo nome. Eu achei a maneira mais fácil foi iniciar o contêiner com a opção --rm :
por exemplo
Infelizmente, é usado quase aleatoriamente nos exemplos dos documentos
fonte
--rm
. Não reinicia.--rm
só funciona se você tiver criado o contêiner usando a--rm
bandeira. Isso significa que, se você criou o contêiner sem a--rm
bandeira, precisará removê-lo manualmente antes de poder tirar vantagem darm
bandeira.Causa
Um contêiner com o mesmo nome ainda existe.
Solução
Para reutilizar o mesmo nome de contêiner, exclua o contêiner existente:
Explicação
Os contêineres podem existir nos seguintes estados, durante os quais o nome do contêiner não pode ser usado para outro contêiner:
created
restarting
running
paused
exited
dead
Você pode ver os contêineres no
running
estado usando:Para mostrar contêineres em todos os estados e descobrir se o nome de um contêiner foi usado, use:
fonte
Aqui está como eu resolvi isso no ubuntu 18:
$ sudo docker ps -a
Para cada contêiner, faça:
$ sudo docker stop container_ID
$ sudo docker rm container_ID
fonte
Você pode removê-lo com o comando
sudo docker rm YOUR_CONTAINER_ID
e executar um novo contêiner comsudo docker run ...
; ou reinicie um contêiner existente comsudo docker start YOUR_CONTAINER_ID
fonte
Resolvi o problema seguindo as etapas a seguir e espero que ajude.
docker ps -a
para listar todos os contêineres no seu sistema.docker rm --force name_of_container
Ocorreu um problema ao usar o NIFI e removi e reinstalei usando o docker. Boa sorte.
fonte
Estou apenas aprendendo o docker e isso também me pegou. Já parei o contêiner com esse nome e, portanto, pensei em executar um novo contêiner com esse nome.
Não é o caso. Só porque o contêiner está parado, não significa que ele não pode ser iniciado novamente e mantém os mesmos parâmetros com os quais foi criado (incluindo o nome).
quando eu corri
docker ps -a
, vi todos os contêineres de teste que criei enquanto brincava.Não tem problema, já que eu não quero mais isso, acabei de fazer
docker rm containername
um ponto em que meu novo contêiner foi autorizado a executar com o nome antigo.Ah, e agora que termino de escrever esta resposta, vejo o comentário de Slawosz na resposta de Walt Howard acima sugerindo o uso de
docker ps -a
fonte