我正在构建Docker映像,并且想知道是否存在一种快速的方法来删除从docker构建中构建的先前映像,并删除在Docker构建期间从该映像派生的任何先前渲染的容器。
我知道我可以通过使用祖先过滤器删除与图像关联的所有容器(正在运行或已停止)来单独执行此操作:
docker rm -f $(docker ps -a -q --filter="ancestor=<image id>")
我也了解如何删除关联的容器:
docker rmi <image id>
但是,在下一个docker构建期间执行两个步骤将是理想的选择。
答案 0 :(得分:3)
但是,在下一个docker构建期间执行两个步骤将是理想的选择。
编写这些步骤的脚本将是一个简单的解决方案,因为docker image build
本身没有这些图像清除选项。
然后您可以将return await step.prompt(PRODUCTS_CAROUSEL, {
prompt: productOptions,
choices: items.map((p: Product) => p.id),
});
添加到docker构建中,以确保重建所有内容。
答案 1 :(得分:0)
解决方案
删除图片和所有关联的容器
rem_image 14a7ba8dc2c0
**按图案删除所有图像**
docker_clean <PATTERN>
例如删除所有没有名称的图像(它们通常在构建步骤中失败)
docker images | grep none
<none> <none> e4205cbdcbd6 2 months ago 1.64GB
<none> <none> e5a21ccf4b6d 2 months ago 1.73GB
<none> <none> bd9b2ddf1a06 2 months ago 1.64GB
<none> <none> f7d08c6c4660 2 months ago 1.73GB
<none> <none> 4bca4e8a7059 2 months ago 1.64GB
<none> <none> ab028586385c 2 months ago 1.73GB
docker_clean none
function rem_image() {
image_id=$1
docker rm -f $(docker ps -a -q --filter="ancestor=$image_id") 2>&- || echo "Found no containers for that image"
docker rmi $image_id
echo "Image deleted successfully"
}
function docker_clean() {
pattern=$1
for image_id in `docker images | grep $pattern | awk '{ print $3}'`
do
echo Removing... $image_id
rem_image $image_id
done
}