Chmelej's Blog

docker-squash

Published 09 Jan 20221 min read0 comments
header-image

Dockerfile trpí tím, že každý řádek vytvoří novou vrstvu v docker image, ve výsledku je těch vrstev moc! Takže buď můžu psát Dockerfile v pseudo komprimovaném stavu, kdy se snažím všechny příkazy nacpat na jeden řádek, což je krajně nepřehledné a blbě se s tím dělá a stejně se vytvoří několik vrstev, nebo lze použít jiný nástroj pro vytváření image (buildah, ansible-bender, …), což zase není úplně standardní, takže to smrdí zbytečnými komplikacemi a nebo lze po zbuildování Dockerfile pomocí docker-squash vytvořit novou verzi, kde je několik posledních vrstev sloučeno do jedné.

Instalace

# apt install python3-pip
# pip install docker-squash

Použití

vyberu kolik toho chci sloučit a následně to sloučím do nové verze. Vybral jsem si prázdnou 1. vrstvu z mého Dockerfile

$ last_layer_id=`docker history tomcat-ips:latest | grep 'MAINTAINER chmelej' | cut -d' ' -f1`
$ docker-squash -f $last_layer_id -t tomcat-ips:squashed2 tomcat-ips:latest