Docker run → 'имя уже используется контейнером'

Запуск реестра 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.

Как предотвратить эту ошибку?

Ответ 1

Я тоже смутился этим. Здесь есть две команды:

docker run Запустите команду в контейнере new

запуск докеров Запуск одного или нескольких остановленных контейнеров

Ответ 2

Это означает, что вы уже начали контейнер в прошлом с параметром docker run --name registry-v1 ....

Вам нужно удалить это прежде, чем вы сможете повторно создать контейнер с тем же именем с помощью docker rm registry-v1. Когда этот контейнер работает на пороге, вам нужно сначала его остановить, прежде чем вы сможете удалить его с помощью docker stop registry-v1. Или просто выберите другое имя для нового контейнера.

Чтобы получить список существующих контейнеров и их имена, просто вызовите docker ps -a.

Ответ 3

Вот что я сделал, все работает отлично.

шаг 1: (он перечисляет докер контейнер с его именем)

docker ps -a

шаг 2:

docker rm name_of_the_docker_container

Ответ 4

Просто чтобы объяснить, что говорят другие (мне потребовалось некоторое время, чтобы понять), проще говоря, когда вы видите эту ошибку, это означает, что у вас уже есть контейнер, и вам нужно его запустить. Интуитивно docker run должен его запускать, но это не так. Команда docker run используется только для START контейнера в первый раз. Для запуска существующего контейнера вам нужно docker start $container-name. Так много для того, чтобы попросить разработчиков создавать значимые/интуитивно понятные команды.

Ответ 5

У вас есть 2 варианта исправить это...

  1. Удалите предыдущий контейнер, используя это имя, с помощью команды docker rm $(docker ps -aq --filter name=myContainerName)

    ИЛИ ЖЕ

  2. Переименуйте текущий контейнер в другое имя, т.е. измените эту часть --name registry-v1 на что-то вроде --name myAnotherContainerName

Вы получаете эту ошибку, потому что это имя контейнера (т. registry-v1) использовалось другим контейнером в прошлом... даже если этот контейнер мог завершиться, т.е. (В настоящее время не используется).

Ответ 6

Когда вы создаете новый образ, вам часто хочется каждый раз запускать новый контейнер с тем же именем. Я обнаружил, что проще всего запустить контейнер с опцией --rm:

--rm        Automatically remove the container when it exits

например

docker run --name my-micro-service --rm <image>

К сожалению, это использовалось почти случайно в примерах из документов

Ответ 7

причина

Контейнер с тем же именем все еще существует.

Решение

Чтобы повторно использовать то же имя контейнера, удалите существующий контейнер:

docker rm <container name>

объяснение

Контейнеры могут существовать в следующих состояниях, во время которых имя контейнера нельзя использовать для другого контейнера:

  • created
  • restarting
  • running
  • paused
  • exited
  • dead

Вы можете увидеть контейнеры в running состоянии, используя:

docker ps

Чтобы показать контейнеры во всех состояниях и узнать, занято ли имя контейнера, используйте:

docker ps -a

Ответ 8

Вы можете удалить его с помощью команды sudo docker rm YOUR_CONTAINER_ID, а затем запустить новый контейнер с помощью sudo docker run...; или перезапустите существующий контейнер с помощью sudo docker start YOUR_CONTAINER_ID

Ответ 9

Я только учусь докеру, и это меня тоже достало. Я уже остановил контейнер с таким именем и поэтому подумал, что смогу запустить новый контейнер с этим именем.

Не тот случай. Тот факт, что контейнер остановлен, не означает, что он не может быть запущен снова, и он сохраняет все те же параметры, с которыми он был создан (включая имя).

когда я запускал docker ps -a то, когда я видел все фиктивные тестовые контейнеры, я создавал их во время игры.

Нет проблем, так как я больше не хочу их, я просто сделал docker rm containername после чего моему новому контейнеру разрешили работать со старым именем.

Ах, и теперь, когда я заканчиваю писать этот ответ, я вижу комментарий Славоша к ответу Уолта Ховарда выше, предлагающий использовать docker ps -a

Ответ 10

Я решил проблему, выполнив следующие шаги, и я надеюсь, что это поможет.

  1. Введите docker ps -a, чтобы получить список всех контейнеров в вашей системе.
  2. Проверьте часть NAMES, в которой вы инициализировали свой док-контейнер.
  3. Затем введите docker rm --force name_of_container
  4. Установите док-контейнер, как вы хотите.

У меня были проблемы с использованием NIFI, и я удалил и переустановил с помощью Docker. Удачи.