我需要动态删除服务器中的所有docker映像,但postgres映像和容器除外。
现在,我需要一种动态方式来获取该docker映像的ID,这样我就可以避免使用:
docker rmi $(docker images -q | grep -v $<id_of_postgres_container>)
Run Code Online (Sandbox Code Playgroud)
对于容器部分,我设法找到了这个:
docker ps -aqf "name=postgres"
Run Code Online (Sandbox Code Playgroud)
仅返回postgres容器的ID。有什么方法可以对图像做同样的事情而又不会太深入bash脚本?
或任何更好的建议?
jp4*_*p48 15
你可以只使用:
$ docker images -q [image_name]
Run Code Online (Sandbox Code Playgroud)
其中image_name可以包含标签(附加在 后面:)、注册表用户名/(如果适用)等。
必须下载图像才能使其工作,例如:
$ docker pull hello-world
...
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest
$ docker images -q hello-world
d1165f221234
$ docker images -q hello-world:latest
d1165f221234
Run Code Online (Sandbox Code Playgroud)
如果图像在本地不可用,我能想到的唯一替代方法是手动查询注册表,例如这样。
docker images --format="{{.Repository}} {{.ID}}" |
grep "^postgres " |
cut -d' ' -f2
Run Code Online (Sandbox Code Playgroud)
获取格式的docker图像repository<space>id,然后过滤以开头的行postgres<space>,然后仅保留id。
docker images --format="{{.Repository}} {{.ID}}" |
grep "^postgres " |
cut -d' ' -f2 |
xargs docker rmi
Run Code Online (Sandbox Code Playgroud)
但是,如果postgres容器和图像当前正在运行或使用,则可以:
docker system prune --force --all
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1561 次 |
| 最近记录: |