GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak aktualizovat obrázky Docker na nejnovější verzi

Obrázky Docker jsou základem kontejnerů Docker. Protože obrázky jsou základem, přemýšleli jste někdy o tom, jak aktualizovat kontejnery Docker, když je vydána nová verze obrázku?

Už se nedivte! V tomto tutoriálu se naučíte, jak aktualizovat své místní úložiště obrázků Docker a aktualizovat své kontejnery na novou verzi, aniž by se něco pokazilo!

Předpoklady

Tento tutoriál bude praktickou ukázkou. Pokud je chcete sledovat, ujistěte se, že máte následující:

  • Linuxové prostředí – Výukový program používá ke spuštění Dockeru Linux (Ubuntu Focal), ale stejné obecné kroky můžete použít také pro Windows nebo macOS.
  • Nainstalujte si Docker engine 20.10.8 (Linux) nebo Docker desktop 3.5.2 (macOS a Windows).

Spouštění Impotent Docker Images

Obraz Dockeru obsahuje veškerý software potřebný ke spuštění aplikace, která je s ním spojena, včetně balíčků OS a závislostí. Docker sestavuje obrázky pomocí instrukcí v souboru zvaném Dockerfile , který obsahuje pokyny k instalaci idempotent.

Idempotentní instrukce znamená, že obraz, který je výsledkem provedení instalační instrukce, bude mít vždy stejný výstup.

Výhodou vytváření idempotentních obrazů je, že jsou nezávislé na systému:výsledný obraz bude vždy stejný. Spuštění kontejneru bude také vždy stejné, bez ohledu na to, kde k provedení dojde.

Nová verze obrázku obvykle zahrnuje některá vylepšení v pokynech pro stavbu základny kontejnerů Docker, například:

  • Novější verze zdrojového kódu aplikace může nahradit starou;
  • Lepší správa závislostí:méně místa nebo lepší výkon;
  • Lepší zabezpečení:Obrázek má bezpečnostní záplaty, aby se zabránilo zranitelnosti.

Chcete-li získat poslední výhody z jakékoli aktualizace v obrazech Docker, musíte vědět, jak je aktualizovat a aplikovat tyto aktualizace na své kontejnery.

Aktualizace obrázků Local Docker

Nejprve začněte aktualizací místního obrazu Dockeru. Aplikace v příkladu python kontejner spouští aplikace kódu Python. Aktualizace místního obrazu Dockeru znamená, že aplikace se mohou spolehnout na nově aktualizovaný obraz.

Nejprve musíte vědět, které obrázky jsou aktuálně dostupné ve vašem místním prostředí. Spusťte následující příkaz a zkontrolujte místní obrázky. Značka TAG sloupec označuje dostupnou verzi obrázku.

docker images

Nyní, když máte místní verzi bitové kopie, musíte najít nejnovější dostupnou bitovou kopii ve vzdáleném registru. Existuje několik vzdálených registrů Docker (úložišť obrazů Docker), které se modul Docker dotazuje, aby aktualizoval vaše místní obrazy. Docker stahuje obrázky z DockerHub ve výchozím nastavení ale existuje několik alternativ, většina z nich soukromých. Některá alternativní úložiště jsou uvedena níže.

  • Amazon Web Service (AWS) ECR Public Gallery
  • Sonatyp Nexus
  • Přístav VM

Procházejte stránku úložiště a vyhledejte požadovaný obrázek:oficiální obrázek Pythonu, který aktualizujete jako příklad. Zadejte python vyhledejte požadovaný obrázek v DockerHubu a otevřete jej, abyste našli dostupné značky. Příklady pro tento tutoriál jsou z obrázku Pythonu.

Každá značka má také datum odeslání. Datum push je datum, kdy byl obrázek nahrán do registru. Všimněte si tagu obrázku a jméno , obojí budete potřebovat v následujících krocích.

Nyní, když máte značku novější verze, je čas aktualizovat obrázek. Chcete-li aktualizovat na novější obrázek, musíte nejprve stáhnout novou verzi. Spusťte docker pull příkaz následovaný dvojtečkou a názvem a značkou novějšího obrázku:název a značka, které jste si poznamenali dříve. Název a značka pro příklad je python:slim-buster . Úplný příkaz a výsledný výstup jsou uvedeny níže.

docker pull python:slim-buster 

Chcete-li stáhnout obrázek z jiného než výchozího registru obrázků Docker (DockerHub), musíte místo toho zadat úplné URI obrázku. Například:vytáhnout Python z (AWS) ECR Public Gallery, spusťte dockerpull public.ecr.aws/bitnami/python:3.7

Jak aktualizovat kontejnery Docker

Jakmile vytvoříte kontejner, obraz kontejneru se nemůže změnit. Protože se obrázek nemůže změnit, nemůžete skutečně aktualizovat spuštěný kontejner. Co uděláte, je znovu vytvořit všechny běžící kontejnery s náhradními kontejnery pomocí novější verze obrázku.

Protože již máte novější verzi, je čas znovu vytvořit kontejnery se starými obrázky, které je třeba aktualizovat.

Chcete-li zjistit, které kontejnery je třeba znovu vytvořit, vypište seznam všech existujících kontejnerů se starým obrazem. docker ps příkaz vypíše kontejnery. Pomocí --filter příznak, určíte, které kontejnery se mají vypsat. Existuje několik dostupných možností filtrování a ancestor příznakové filtry podle obrázku použitého jako základ pro stavbu kontejneru. Počáteční kontejnery v příkladech jsou pro Python 3.7.2, který použijete jako filtr. -a přepínač zobrazí všechny dostupné kontejnery.

docker ps -a --filter "ancestor=python:3.7.2"

Můžete použít výstup docker ps jako vstup pro spuštění docker stop příkaz na všech uvedených kontejnerech. Příznak -q je zahrnut, takže příkaz listing vrací pouze ID kontejnerů. Výstupem příkazu je seznam ID zastavených kontejnerů.

docker stop $(docker ps -aq  --filter "ancestor=python:3.7.2")

Po zastavení kontejnerů musíte požádat Docker, aby je před odstraněním zastaralého obrazu účinně odstranil ze systému.

docker rm $(docker ps -aq --filter "ancestor=python:3.7.2")

Po odstranění všech kontejnerů spojených s nepodporovaným obrázkem můžete starý obrázek odstranit pomocí docker rmi příkaz.

docker rmi python:3.7.2

Vytvoření nových kontejnerů pomocí aktualizačních obrázků

Nyní je čas konečně nahradit staré kontejnery, ty, které byly dříve smazány, novými kontejnery založenými na aktualizovaném obrázku. Tentokrát kontejnery vytvoříte pomocí novější verze obrázku. Vzhledem k tomu, že kontejnery jsou idempotentní, můžete očekávat, že vše bude fungovat jako dříve.

Spusťte nový kontejner pomocí docker run příkaz a název a značku aktualizovaného obrázku, který bude kontejner potřebovat. V tomto příkladu -it příznak říká Dockeru, aby spouštěl kontejner v interaktivním režimu, takže můžete spouštět příkazy uvnitř kontejneru, abyste ověřili všechny aktualizované funkce.

docker run -it python:slim-buster

Všimněte si, že nový kontejner Docker používá novější verzi Pythonu:verze 3.9.7.

Závěr

V tomto tutoriálu jste nahlédli za kryty a naučili jste se kouzlo, jak aktualizovat kontejnery Docker:kouř a zrcadla! Neexistuje žádná aktualizace! Místo toho odstraňte všechny stopy staré verze a nahraďte je novými kontejnery pomocí novější verze. A díky idempotenci kontejnery fungují jako obvykle:TA-DA!

Jaké jsou tedy kontejnery, které plánujete jako další aktualizaci?


Docker
  1. Jak přesunout obrazy Dockeru mezi hostiteli

  2. Jak upgradovat Sendmail na nejnovější verzi na CentOS

  3. Jak sdílet obrázky Docker s ostatními

  1. Jak upravit obrázky Docker

  2. Aktualizujte cURL pro EasyApache 4 na nejnovější verzi

  3. Jak aktualizovat/přidat soubor v Docker Image

  1. Jak aktualizovat obrázek a kontejner Dockeru na nejnovější verzi

  2. Jak nainstalovat nejnovější verzi ruční brzdy na Ubuntu

  3. Jak přeinstalovat nejnovější verzi cmake?