docker stop
остановит ваш контейнер.
В этой команде можно найти все остановленные контейнеры.
docker ps --filter "status=exited
Полученная вами ошибка говорит The container name "/demo-api" is already in use by container
Это означает, что уже существует контейнер с именем demo-api
, что верно, поскольку остановка контейнера Docker не удалит этот контейнер, и это имя контейнера будет существовать.
Все, что вам нужно сделать, это
либо
Запустите команду docker run
без указания опции --name
, которая дает имя вашему контейнеру demo-api
. Так что каждый раз, когда ваш скрипт извлекает и запускает контейнер, он получает новое случайное имя контейнера.
OR
Если вы хотите сохранить имя контейнера demo-api
, а не останавливать контейнер с помощью docker stop
Просто удалите контейнер все вместе docker rm -f demo-api
UPDATE
Я только что видел, как вы обновили свой вопрос.
Остановка контейнера, который был запущен с использованием опции --rm
, должна удалить это
контейнер все вместе.
Похоже, что полученная вами ошибка существует только тогда, когда имя уже используется другим контейнером.
Пока что вы можете попробовать запустить скрипт в цикле while и проверить, происходит ли это во время этого запуска.
Вот скрипт, который я использовал (но у него не было проблем), попробуйте это на вашем компьютере, где эта проблема возникает.
#!/bin/bash
i=20
while [ $i -gt 0 ]
do
docker stop demo-api
docker pull alpine
docker run --name demo-api -t -d --rm alpine sh
i=$((i - 1))
done