Docker rmi:来自守护程序的错误响应:无效的引用格式:存储库名称必须为小写

时间:2019-01-14 19:30:03

标签: powershell docker

我正在尝试清理与容器一起使用的(Windows)构建服务器。

我的目标是定期删除不是基本映像的所有内容,我通过过滤私有注册表名称来做到这一点。当我尝试为此使用PowerShell时,我遇到了这个奇怪的错误:

library(purrr)
map2_dfr(rapheys_df_list, XGB_models_Prep, bind_rows)

Screenshot 1

这是我自己运行的rapheys_df_list <- list(data.frame(col1 = 1:3, col2 = 4:6), data.frame(col1 = 7:9, col2 = 10:12)) XGB_models_Prep <- list(data.frame(col1 = 2:5, col2 = 3:6), data.frame(col1 = 4:6, col2 = 0:2)) 过滤器,它返回的图像没有问题:

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 2

尽管错误指出了什么,但注册表或映像名称中没有大写字符。

也不起作用:

Select-String

1 个答案:

答案 0 :(得分:0)

使用-like运算符过滤docker images的输出。它不仅比Select-String更轻巧,而且后者还会生成MatchInfo对象,而不是仅传递匹配的字符串,这可能会导致不良行为。另外,您不能只将整行传递给docker rmi。该命令需要一个图像ID,因此您需要从字符串中提取该ID。

(docker images) -like '*azurecr*' | ForEach-Object {
    $id = ($_ -split '\s+')[2]
    docker rmi $id
}