Я думаю, что вы можете использовать docker history
(Показать историю изображения), чтобы найти все изображения, связанные с окончательным. Я хочу сообщить вам, что это решение не работает для многоступенчатых сборок, потому что конечное изображение имеет только ссылки на изображения, которые были для него базовыми слоями.
Позвольте мне показать вам пример:
1. Создаем простое Dockerfile
:
FROM ubuntu:latest
RUN touch newfile
2. Из него строим образ докера:
$ docker build -t new-image .
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM ubuntu:latest
latest: Pulling from library/ubuntu
898c46f3b1a1: Pull complete
63366dfa0a50: Pull complete
041d4cd74a92: Pull complete
6e1bee0f8701: Pull complete
Digest: sha256:017eef0b616011647b269b5c65826e2e2ebddbe5d1f8c1e56b3599fb14fabec8
Status: Downloaded newer image for ubuntu:latest
---> 94e814e2efa8
Step 2/2 : RUN touch newfile
---> Running in ac93702f363b
Removing intermediate container ac93702f363b
---> 4d52ac122761
Successfully built 4d52ac122761
Successfully tagged new-image:latest
3. И теперь мы можем очистить все изображения, которые использовались для построения окончательного:
$ docker history new-image:latest | awk '!/IMAGE|<missing>/ {print $1}' | xargs -I {} docker rmi {}
Untagged: new-image:latest
Deleted: sha256:4d52ac122761ec1ba9f3d77606c49f98cf8c7d728d60834a87f25cede39a2027
Deleted: sha256:7f62b9533dbd6514fe0cb7f4ddc3086ad5ae45fe1c13f5eeea1cc38f575e92bd
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:017eef0b616011647b269b5c65826e2e2ebddbe5d1f8c1e56b3599fb14fabec8
Deleted: sha256:94e814e2efa8845d95b2112d54497fbad173e45121ce9255b93401392f538499
Deleted: sha256:e783d8ee44ce099d51cbe699f699a04e43c9af445d85d8576f0172ba92e4e16c
Deleted: sha256:cc7fae10c2d465c5e4b95167987eaa53ae01a13df6894493efc5b28b95c1bba2
Deleted: sha256:99fc3504db138523ca958c0c1887dd5e8b59f8104fbd6fd4eed485c3e25d2446
Deleted: sha256:762d8e1a60542b83df67c13ec0d75517e5104dee84d8aa7fe5401113f89854d9