Запуск docker
реестра с помощью команды ниже всегда выдает ошибку:
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.
Как предотвратить эту ошибку?
docker ps -a
чтобы увидеть все контейнеры в этом случае.docker start -a container-name
это команда, которую вы можете использовать для запуска контейнера, который был созданdocker run
. Обратите внимание на-a
флаг, который является сокращением для--attach
. Таким образом, контейнер запускается на переднем плане, точно так же, как при использованииdocker run
(по умолчанию контейнер запускается на переднем плане).docker create
создает контейнер, но не запускает его.Это означает, что вы уже запустили контейнер в прошлом с параметром
docker run --name registry-v1 ...
.Вам нужно сначала удалить это, прежде чем вы сможете заново создать контейнер с тем же именем с помощью
docker rm registry-v1
. Когда этот контейнер работает, вам нужно сначала остановить его, прежде чем вы сможете удалить его с помощьюdocker stop registry-v1
. Или просто выберите другое имя для нового контейнера.Чтобы получить список существующих контейнеров и их имена, просто вызовите
docker ps -a
.источник
docker rm $(docker ps -aq --filter name=myContainerName)
docker rm myContainerName
?Вот что я сделал, все отлично работает.
Шаг 1: (он перечисляет Docker-контейнер со своим именем)
шаг 2:
источник
Просто чтобы объяснить, что говорят другие (мне потребовалось некоторое время, чтобы понять), проще говоря, когда вы видите эту ошибку, это означает, что у вас уже есть контейнер, и вам нужно запустить его. Хотя интуитивно
docker run
предполагается запустить его, это не так. Командаdocker run
используется только для запуска контейнера в первый раз. Для запуска существующего контейнера вам нужноdocker start $container-name
. Так много для того, чтобы попросить разработчиков создавать значимые / интуитивно понятные команды.источник
У вас есть 2 варианта исправить это ...
Удалить предыдущий контейнер, используя это имя, с помощью команды
docker rm $(docker ps -aq --filter name=myContainerName)
ИЛИ
--name registry-v1
на что-то вроде--name myAnotherContainerName
Вы получаете эту ошибку, потому что это имя контейнера (то есть
registry-v1
) использовалось другим контейнером в прошлом ... даже если этот контейнер мог завершиться, т. Е. (В настоящее время не используется).источник
Когда вы создаете новый образ, вам часто хочется каждый раз запускать новый контейнер с тем же именем. Я обнаружил, что проще всего запустить контейнер с параметром --rm :
например
К сожалению, он используется почти случайно в примерах из документов
источник
--rm
. Это не перезапускается.--rm
работает, только если вы создали контейнер, используя--rm
флаг. Это означает, что если вы создали контейнер без--rm
флага, вам придется удалить его вручную, чтобы использоватьrm
флаг.причина
Контейнер с тем же именем все еще существует.
Решение
Чтобы повторно использовать то же имя контейнера, удалите существующий контейнер:
объяснение
Контейнеры могут существовать в следующих состояниях, во время которых имя контейнера нельзя использовать для другого контейнера:
created
restarting
running
paused
exited
dead
Вы можете увидеть контейнеры в
running
состоянии с помощью:Чтобы показать контейнеры во всех состояниях и узнать, занято ли имя контейнера, используйте:
источник
Вот как я решил это на Ubuntu 18:
$ sudo docker ps -a
Для каждого контейнера сделайте:
$ sudo docker stop container_ID
$ sudo docker rm container_ID
источник
Вы можете удалить его с помощью команды
sudo docker rm YOUR_CONTAINER_ID
, а затем запустить новый контейнер с помощьюsudo docker run ...
; или перезапустите существующий контейнер сsudo docker start YOUR_CONTAINER_ID
источник
Я решил проблему, выполнив следующие шаги, и я надеюсь, что это поможет.
docker ps -a
список всех контейнеров в вашей системе.docker rm --force name_of_container
У меня были проблемы с использованием NIFI, и я удалил и переустановил с помощью Docker. Удачи.
источник
Я только учусь докеру, и это меня тоже достало. Я уже остановил контейнер с таким именем и поэтому подумал, что могу запустить новый контейнер с этим именем.
Не тот случай. Тот факт, что контейнер остановлен, не означает, что он не может быть запущен снова, и он сохраняет все те же параметры, с которыми он был создан (включая имя).
когда я бегал
docker ps -a
, тогда я видел все фиктивные тестовые контейнеры, которые я создал, пока играл.Нет проблем, так как я больше не хочу тех, которые я только что сделал, и
docker rm containername
в этот момент моему новому контейнеру разрешили работать со старым именем.Ах, и теперь, когда я заканчиваю писать этот ответ, я вижу комментарий Славоша к ответу Уолта Ховарда выше, предлагающий использовать
docker ps -a
источник