Úvod
Obrazy Dockeru jsou základní komponenty používané pro vytváření kontejnerů Docker. I když to úzce souvisí, mezi obrazy Docker a kontejnery je velký rozdíl.
Obrázek dockeru je základem kontejneru. Tyto obrázky jsou vytvářeny zápisem Dockerfiles, seznamů instrukcí automaticky spouštěných pro vytvoření konkrétního obrázku Dockeru.
Při vytváření obrazu Dockeru se chcete ujistit, že bude světlý. Vyhýbání se velkým obrázkům urychluje vytváření a nasazování kontejnerů. Proto je zásadní zmenšit velikost obrázku na minimum.
Čtěte dále a zjistěte, jak udržet obrázky Docker malé.
Použijte menší základ obrázku (Alpine)
Chcete-li vytvořit image Docker, potřebujete základnu, na kterou můžete nainstalovat a přidat součásti podle potřeby. Můžete si stáhnout existující nadřazený obrázek a použít jej jako základ pro svůj vlastní obrázek nebo jej vytvořit od začátku.
Jako základ obrazu nainstalujete variantu operačního systému. Základ operačního systému může drasticky ovlivnit velikost vašeho konečného obrazu Dockeru, a proto hraje důležitou roli rozhodování o tom správném.
Linux vytvořil užitečnou alternativu, která je lehká a má minimální prostředí POSIX – Alpine. Tento obrazový základ distribuce Linuxu má pouze 5 MB a je postaven na musl libc a BusyBox.
Ve srovnání s jinými obrazy OS je Alpine mnohem menší. Nejvíce stahovaný obraz operačního systému, Ubuntu, má 188 MB, zatímco Alpine má pouze 5 MB.
Použijte soubor .dockerignore
Vyloučení určitých souborů, které pro váš obrázek nejsou nezbytné, vám může pomoci zmenšit velikost obrázku. To je místo, kde .dockerignore soubor přichází.
Při vytváření obrázku napíšete Dockerfile se specifikacemi, jak by měl obrázek vypadat.
Při nastínění kontextu sestavení je také důležité zahrnout soubor .dockerignore a uložit jej do stejné složky jako soubor Dockerfile.
Tato funkce Dockeru se spouští docker run
. Systém zkontroluje, zda takový soubor existuje, a použije jeho výjimky a ignoruje pravidla. Tímto způsobem odstraníte veškerý irelevantní obsah z vytvořeného kontextu.
Využijte funkci vícefázového sestavení v Dockeru
Docker představil vícestupňovou funkci ve své verzi 17.05. Umožňuje uživatelům rozdělit Dockerfile do několika fází.
Každá fáze začíná FROM
návod. Požadovaný artefakt přejde do následující fáze a zanechá za sebou obsah, který v artefaktu konečného obrázku nebudete potřebovat.
Protože proces přenáší pouze nezbytné součásti artefaktu, nemusíte po každém pokynu čistit ručně.
Díky vícefázové funkci se vyhnete přidávání zbytečných vrstev, což má značný dopad na celkovou velikost obrázku.
Vyhněte se přidávání zbytečných vrstev pro zmenšení velikosti obrázku dockeru
Obrázek Dockeru zabírá více místa s každou vrstvou, kterou do něj přidáte. Čím více vrstev tedy máte, tím více místa obrázek vyžaduje.
Každý RUN
instrukce v Dockerfile přidá do vašeho obrázku novou vrstvu. Proto byste se měli pokusit o manipulaci se soubory v rámci jednoho RUN
příkaz. Také zkombinujte různé příkazy do jedné instrukce pomocí &&
možnost.
Můžete například aktualizovat úložiště a nainstalovat více balíčků v jediném RUN
návod. Chcete-li získat jasný a úplný řádek, použijte zpětné lomítko (\ ) zadejte příkaz do více řádků.
Kromě aktualizace a instalace balíčků byste měli také vyčistit mezipaměť apt pomocí && rm -rf /var/lib/apt/lists/*
abyste ušetřili další místo.
RUN apt-get update && apt-get install -y\
[package-one] \
[package-two]
&& rm -rf /var/lib/apt/lists/*
Pozor na aktualizace a nepotřebné balíčky a závislosti
Dalším způsobem, jak ušetřit místo a zachovat malou image Dockeru, je zajistit, že používáte nejnovější verzi platformy, na které stavíte.
Díky nejnovější verzi se vyhnete rozsáhlým aktualizacím, které stahují nespočet rpm balíčků a zabírají spoustu místa.
Instalace balíčku také často zahrnuje stahování závislostí, na kterých se software spoléhá. Někdy se však při stahování uloží také balíčky, které nejsou povinné, ale spíše doporučené.
Takové nechtěné balíčky se mohou sčítat a spotřebovávat hodně místa na disku. Chcete-li stáhnout pouze hlavní závislosti, přidejte --no-install-recommends
možnost instalačního příkazu.
Například:
RUN apt-get install --no-install-recommends [package-one]
Bonusový tip:Ukládání do mezipaměti
Ačkoli tento tip neovlivňuje celkovou velikost obrazu Dockeru, pomáhá s rychlejším sestavováním Dockeru.
Docker urychluje vytváření obrázků tím, že do mezipaměti lokálně ukládá existující vrstvy souboru Dockerfile a používá je k rychlejšímu obnovování obrázků.
Představte si například, že máte jednoduchý Dockerfile sestávající ze tří vrstev. Jakmile z tohoto souboru vytvoříte obrázek, systém tyto tři vrstvy automaticky uloží do mezipaměti. Při příštím vytvoření obrazu se načte z místní mezipaměti.
Pokud se rozhodnete upravit obrázek a změnit jednu z vrstev, mezipaměť se po změněné vrstvě k ničemu nepoužije.
Doporučujeme objednávat pokyny způsobem, který zvyšuje efektivitu a využívá funkci ukládání do mezipaměti. Umístěte pokyny, které se pravděpodobně změní, do Dockerfile co nejníže.