Docker rmi: Ответ об ошибке от демона: недопустимый формат ссылки: имя репозитория должно быть в нижнем регистре - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь очистить (Windows) сервер сборки, который мы используем с нашими контейнерами.

Моя цель состоит в том, чтобы периодически удалять все, что не является базовым образом, и я делаю это путем фильтрации нашего личного реестра. Я сталкиваюсь с этой странной ошибкой, когда пытаюсь использовать PowerShell для этого:

PS C:\> docker images | Select-String "azurecr" | % { docker rmi $_ }
Error response from daemon: invalid reference format: repository name must be lowercase
Error response from daemon: invalid reference format: repository name must be lowercase
Error response from daemon: invalid reference format: repository name must be lowercase
Error response from daemon: invalid reference format: repository name must be lowercase
Error response from daemon: invalid reference format: repository name must be lowercase

Screenshot 1

Я просто запускаю фильтр Select-String, который возвращает изображения без проблем:

docker images | Select-String "azurecr"

Screenshot 2

Несмотря на то, что говорится об ошибке, в реестре или в имени изображения нет прописных символов.

Также не работает:

PS C:\> (docker images) -like '*azurecr*' | % { docker rmi $_ }
Error response from daemon: invalid reference format: repository name must be lowercase
Error response from daemon: invalid reference format: repository name must be lowercase
Error response from daemon: invalid reference format: repository name must be lowercase

1 Ответ

0 голосов
/ 15 января 2019

Используйте оператор -like для фильтрации вывода docker images. Он не только более легкий, чем Select-String, но последний также создает MatchInfo объекты, а не пропускает только совпадающие строки, что может вызвать нежелательное поведение. Кроме того, вы не можете просто передать полные строки на docker rmi. Команда ожидает идентификатор изображения, поэтому вам нужно извлечь его из строки.

(docker images) -like '*azurecr*' | ForEach-Object {
    $id = ($_ -split '\s+')[2]
    docker rmi $id
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...