Ошибка в удалении изображения, а не контейнера. Это либо состояние гонки из-за того, что контейнер еще не полностью удален, либо у вас есть что-то еще, запускающее контейнеры в системе, например режим роя.
Для состояния гонки просто добавьте несколько секунд между командами, чтобы дать rm время для завершения на сервере. Также нет необходимости в остановке, так как вы делаете rm -f
:
docker rm -f $(docker ps -a -q) \
&& sleep 2 && docker rmi -f $(docker images -a -q)
Если у вас есть контейнеры, работающие в режиме роя, сначала удалите стеки и службы, которые вы не хотите запускать:
# something like this, will only work if you have stacks defined
docker stack rm $(docker stack ls --format '{{.Name}}')
# similar command for services
docker service rm $(docker service ls -q)
Каждому из них может потребоваться 10 секунд для выхода из контейнеров, плюс еще несколько секунд для менеджера роя, чтобы отправить команду, поэтому вы можете захотеть получить sleep 15
после того, как они оба вернутся, чтобы дать серверу время для завершения запрос.