Uruchomienie docker
rejestru z poniższym poleceniem zawsze powoduje błąd:
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.
Jak zapobiec temu błędowi?
docker ps -a
w tym przypadku wszystkich pojemników.docker start -a container-name
to polecenie, którego można użyć do uruchomienia kontenera, który został utworzonydocker run
. Zwróć uwagę na-a
flagę, która jest skrótem--attach
. W ten sposób kontener jest uruchamiany na pierwszym planie, podobnie jak podczas używaniadocker run
(który domyślnie uruchamia kontener na pierwszym planie).docker create
tworzy kontener, ale go nie uruchamia.Oznacza to, że kontener został już uruchomiony w przeszłości z parametrem
docker run --name registry-v1 ...
.Najpierw musisz go usunąć, aby móc ponownie utworzyć kontener o tej samej nazwie
docker rm registry-v1
. Kiedy ten kontener jest jeszcze uruchomiony, musisz go najpierw zatrzymać, zanim będziesz mógł go usunąćdocker stop registry-v1
. Lub po prostu wybierz inną nazwę dla nowego kontenera.Aby uzyskać listę istniejących kontenerów i ich nazwy, wystarczy wywołać
docker ps -a
.źródło
docker rm $(docker ps -aq --filter name=myContainerName)
docker rm myContainerName
?Tutaj, co zrobiłem, działa dobrze.
krok 1: (wyświetla nazwę kontenera dokowanego wraz z nazwą)
krok 2:
źródło
Aby wyjaśnić, co mówią inni (zajęło mi to trochę czasu, aby zrozumieć), po prostu, gdy zobaczysz ten błąd, oznacza to, że masz już kontener i musisz go uruchomić. Chociaż intuicyjnie
docker run
ma go uruchamiać, nie działa. Poleceniedocker run
służy tylko START pojemnik po raz pierwszy. Aby uruchomić istniejący kontener, potrzebujeszdocker start $container-name
. Tyle o proszeniu programistów o tworzenie sensownych / intuicyjnych poleceń.źródło
Masz 2 opcje, aby to naprawić ...
Usuń poprzedni kontener, używając tej nazwy, za pomocą polecenia
docker rm $(docker ps -aq --filter name=myContainerName)
LUB
--name registry-v1
na coś podobnego--name myAnotherContainerName
Otrzymujesz ten błąd, ponieważ nazwa kontenera (tj.
registry-v1
) Była używana przez inny kontener w przeszłości ... nawet jeśli ten kontener mógł wyjść, tj. (Obecnie nie jest używany).źródło
Podczas budowania nowego obrazu często chcesz uruchamiać nowy kontener za każdym razem o tej samej nazwie. Znalazłem najprostszy sposób, aby uruchomić kontener z opcją --rm :
na przykład
Niestety jest używane prawie losowo w przykładach z dokumentów
źródło
--rm
. Nie uruchamia się ponownie.--rm
działa tylko wtedy, gdy kontener został utworzony przy użyciu--rm
flagi. Oznacza to, że jeśli utworzyłeś kontener bez--rm
flagi, będziesz musiał go usunąć ręcznie, zanim będziesz mógł skorzystać zrm
flagi.Przyczyna
Kontener o tej samej nazwie nadal istnieje.
Rozwiązanie
Aby ponownie użyć tej samej nazwy kontenera, usuń istniejący kontener przez:
Wyjaśnienie
Kontenery mogą istnieć w następujących stanach, w których nazwy kontenera nie można użyć dla innego kontenera:
created
restarting
running
paused
exited
dead
Kontenery można wyświetlić w
running
stanie, używając:Aby wyświetlić kontenery we wszystkich stanach i dowiedzieć się, czy nazwa kontenera jest zajęta, użyj:
źródło
Oto jak rozwiązałem to na Ubuntu 18:
$ sudo docker ps -a
Dla każdego pojemnika wykonaj:
$ sudo docker stop container_ID
$ sudo docker rm container_ID
źródło
Możesz go usunąć za pomocą polecenia
sudo docker rm YOUR_CONTAINER_ID
, a następnie uruchomić nowy kontener za pomocąsudo docker run ...
; lub zrestartuj istniejący kontener za pomocąsudo docker start YOUR_CONTAINER_ID
źródło
Rozwiązałem problem, wykonując następujące kroki i mam nadzieję, że to pomoże.
docker ps -a
aby wyświetlić listę wszystkich kontenerów w systemie.docker rm --force name_of_container
Miałem problem z używaniem NIFI i usunąłem i ponownie zainstalowałem za pomocą dokera. Powodzenia.
źródło
Właśnie się uczę dokera i to mnie też. Zatrzymałem już kontener o tej nazwie i dlatego pomyślałem, że mogę uruchomić nowy kontener o tej nazwie.
Nie tak jest. To, że kontener został zatrzymany, nie oznacza, że nie można go ponownie uruchomić i zachowuje wszystkie te same parametry, które zostały utworzone (w tym nazwę).
kiedy pobiegłem
docker ps -a
, wtedy zobaczyłem wszystkie atrapy pojemników testowych, które stworzyłem podczas zabawy.Nie ma problemu, ponieważ nie chcę ich więcej, właśnie zrobiłem,
docker rm containername
w którym momencie mój nowy kontener mógł działać ze starą nazwą.Ach, a teraz, kiedy kończę pisanie tej odpowiedzi, widzę komentarz Sławosza do powyższej odpowiedzi Walta Howarda sugerujący użycie
docker ps -a
źródło