GNU/Linux >> Znalost Linux >  >> Linux

Jak analyzovat a porovnávat obrázky kontejnerů pomocí Container-diff

V tomto tutoriálu se naučíme, co je Container-diff, jak nainstalovat Container-diff v různých distribucích Linuxu a nakonec, jak analyzovat a porovnávat obrazy kontejnerů pomocí Container-diff.

Úvod

Mám dobrou zprávu pro ty, kteří staví aplikace na kontejnerech.

Představte si tento scénář. Jste vývojář softwaru. Pracujete na aplikaci, na obrazu kontejneru za běhu, který spravuje někdo jiný.

Uprostřed vývoje vydá původní tvůrce obrazu kontejneru novou verzi tohoto základního obrazu s aktualizovanými systémovými balíčky.

Stáhnete si aktualizovaný základní obraz a budete na něm pokračovat v přestavbě aplikace. Najednou vaše aplikace přestala fungovat.

Úspěšně jste ji zprovoznili v předchozím obrazu, ale vaše aplikace nefungovala v nejnovějším základním obrazu.

Jste si také docela jisti, že aplikace fungovala dobře na předchozí verzi systémových balíčků v základním obrazu, ale netušíte, který z nich. Zde je "Container-diff" přichází na pomoc.

Co je to kontejnerový rozdíl?

Container-diff je open source nástroj od Google který vám pomůže analyzovat a porovnávat obrázky kontejnerů hostované na cloudové platformě Google .

Container-diff se používá ke snadnému sledování změn provedených mezi dvěma základními obrázky, takže můžete lépe porozumět tomu, co se uvnitř obrázků skutečně změnilo.

To vám ušetří spoustu času hledáním nekompatibility verze balíčku a můžete se rozhodnout, zda aplikaci přestavět na nejnovější image kontejneru, nebo jen zůstat u staré verze, dokud nenajdete vhodné řešení.

Pomůže vám také snadno prozkoumat, zda vaše aplikace bude či nebude fungovat na nových sestavách obrazu kontejneru.

Container-diff analyzuje následující v Container images.

  • Historie obrázků Docker,
  • Systém souborů obrázků,
  • Velikost obrázku,
  • Balíčky Apt,
  • Balíčky RPM,
  • pip balíčky,
  • Balíčky npm.

Nyní se podívejme, jak nainstalovat Container-diff a jak jej použít k porovnání obrázků kontejnerů.

Instalace Container-diff v Linuxu

Testoval jsem Container-diff na systému Ubuntu. Měl by však fungovat na Debianu a dalších variantách Ubuntu a také na dalších distribucích Linuxu.

Nejprve se ujistěte, že jste nainstalovali Docker. Pokud jste jej ještě nenainstalovali, přejděte na následující odkaz.

  • Jak nainstalovat Docker v Ubuntu

Jakmile je Docker nainstalován, nainstalujte Container-diff do systému Linux pomocí následujících příkazů:

$ curl -LO https://storage.googleapis.com/container-diff/latest/container-diff-linux-amd64
$ sudo install container-diff-linux-amd64 /usr/local/bin/container-diff

Nebo, pokud nechcete používat sudo, spusťte:

$ curl -LO https://storage.googleapis.com/container-diff/latest/container-diff-linux-amd64
$ mkdir -p "$HOME/bin" 
$ export PATH="$PATH:$HOME/bin"
$ install container-diff-linux-amd64 $HOME/bin/container-diff

Pokud používáte Arch Linux, můžete Container-diff nainstalovat pomocí následujícího příkazu:

$ sudo pacman -S container-diff

Analýza obrázků kontejnerů

Nejprve analyzujme obrázek kontejneru, například Debian 9, který je uložen v Google Container Registry .

$ analyzovat kontejner-diff gcr.io/google-appengine/debian9:latest

Ukázkový výstup:

Načítání obrázku gcr.io/google-appengine/debian9:latest ze zdroje Cloud RegistryNačítání analýz-----Apt-----Balíčky nalezené v gcr.io/google-appengine/debian9:latest:NAME VELIKOST VERZE -adduser 3.115 849K-apt 1.4.8 3.5M-base-files 9.9 deb9u2 333K-base-passwd 3.5.43 229K-bash 4.4-5 5.7M-bsdutils 1:2.238.2Ka1ific163-1 -coreutils 8.26-3 14.7M-dash 0.5.8-2.4 204K-debconf 1.5.61 558K-debian-archive-keyring 2017.5 118K-debianutils 4.8.1.1 213K-diffutil31M.1:31.531M. M-e2fslibs 1.43.4-2 449K-e2fsprogs 1.43.4-2 3.9M-findutils 4.6.0 git+20161106-2 1.8M-gcc-6-base 6.3.0-18 209K-81gpg. deb9u1 721K-grep 2.27-2 1.1M-gzip 1.6-5 b1 231K-hostname 3.18 b1 47K-init-system-helpers 1.48 131K-libacl1 2.2.52-3 b1 1kg-M54bat 183pM-libatr 1:2.4.47-2 b2 42K-libaudit-běžný 1:2.6.7-2 30K-libaudit1 1:2.6.7-2 150K-libblkid1 2.29.2-1 367K-libbz2-1.0 1.10.6-8. libc-bin 2.24-11 deb9u1 3.3M-libc6 2.24-11 deb9u1 10.4M-libcap-ng0 0.7.7-3 b1 43K- libcomerr2 1.43.4-2 83K-libdb5.3 5.3.28-12 deb9u1 1.8M-libdebconfclient0 0.227 67K-libfdisk1 2.29.2-1 469K-libgcc1 1-28113.6.6. M-libgpg-error0 1.26-2 572K-liblz4-1 0.0~r131-2 b1 93K-liblzma5 5.2.2-1.2 b1 339K-libmount1 2.29.2-1 403K-libncursesw5 2011601modul 1.1.8-3.6 874K-libpam-modules-bin 1.1.8-3.6 220K-libpam-runtime 1.1.8-3.6 1016K-libpam0g 1.1.8-3.6 229K-libselpcre3 2:26639-33 209K-libsemanage-common 2.6-2 39K-libsemanage1 2.6-2 291K-libsepol1 2.6-2 653K-libsmartcols1 2.29.2-1 257K-libss2 1.43.4-2 fsl31b-9.4M libstdc++6 6.3.0-18 2M-libsystemd0 232-25 deb9u1 652K-libtinfo5 6.0 20161126-1+deb9u1 478K-libudev1 232-25 deb9u1 2421K-05081.2421K-05081 -1 107K-login 1:4.4-4.1 2.7M-lsb-base 9.20161125 49K-mawk 1.3.3-17 b3 183K-mount 2.29.2-1 444K-multiarch-support 2.291u-16.0curs -1+deb9u1 340K-ncurses-bin 6.0 20161126-1+deb9u1 536K -netbase 5.4 44K-openssl 1.1.0f-3 deb9u1 1.2M-passwd 1:4.4-4.1 2.4M-perl-base 5.24.1-3 deb9u2 7.4M-sed 4.4-1 799K-sensible-1K.9utils sysvinit-utils 2.88dsf-59.9 110K-tar 1.29b-1.1 2.7M-tzdata 2017c-0 deb9u1 2.9M-util-linux 2.29.2-1 3.5M-zlib51g 1:1.2.8.> 

Jak můžete vidět, Container-diff zobrazuje analýzu APT bez --type zadán příznak.

Seznam dostupných analyzátorů je;

  • --type=history [Historie]
  • --type=file [Systém souborů]
  • --type=pip [Pip]
  • --type=apt [Apt]
  • --type=node [Uzel]

Můžete spustit více analyzátorů najednou, jak je uvedeno níže.

analýza $ container-diff gcr.io/google-appengine/debian9:latest --type=history --type=apt --type=file

Porovnejte obrázky kontejneru pomocí Container-diff

Chcete-li porovnat dva obrazy kontejnerů, použijte následující příkaz:

$ rozdíl kontejner-diff gcr.io/google-appengine/debian9:latest gcr.io/google-appengine/debian9:2017-10-18-191738

Zde porovnávám dva obrazy kontejneru, nejnovější obraz sestavení Debianu 9 a obraz Debianu 9 vytvořený 18. 10. 2017.

Ukázkový výstup:

Počáteční rozdíl u obrázků gcr.io/google-appengine/debian9:latest a gcr.io/google-appengine/debian9:2017-10-18-191738, použití se liší:[apt]Načítání obrázku gcr.io/google -appengine/debian9:2017-10-18-191738 ze zdroje Cloud RegistryNačítání obrázku gcr.io/google-appengine/debian9:nejnovější ze zdroje Cloud RegistryComputing diffs-----Apt-----Balíčky nalezené pouze v gcr. io/google-appengine/debian9:latest:ŽádnéBalíčky nalezené pouze v gcr.io/google-appengine/debian9:2017-10-18-191738:ŽádnéVerze:OBRÁZEK ​​1 (gcr.io/google-appengine/debian9:latest) IMAGE2 (gcr.io/google-appengine/debian9:2017-10-18-191738)-libssl 1.1 1.1.0f-3 deb9u1, 3.4M 1.1.0f-3, 3.4M-openssl 1.1.0f-3 deb9u1, 1.2M 1.1.0f-3, 1.2M-tzdata 2017c-0 deb9u1, 2,9 mil. 2017b-1, 2,9 mil.

Jak můžete vidět ve výstupu, v nejnovějším sestavení byly aktualizovány tři balíčky.

Pokud mezi těmito dvěma obrázky nejsou žádné rozdíly, uvidíte výstup podobný níže.

Výpočetní rozdíly-----Apt-----Balíčky nalezené pouze v gcr.io/google-appengine/debian9:latest:Žádné Balíčky nalezené pouze na gcr.io/google-appengine/debian9:2017-11-27-220229:Žádné Rozdíly mezi verzemi:Žádné 

Jak jsem již řekl, ve výchozím nastavení bez --type zadán příznak, kontejner-diff spustí analýzu balíčků Apt.

Můžeme spustit více analyzátorů najednou, jak je ukázáno níže.

$ rozdíl kontejner-diff gcr.io/google-appengine/debian9:latest gcr.io/google-appengine/debian9:2017-10-18-191738 --type=history --type=apt --type=uzel

Zde spouštím tři analyzátory, jmenovitě historii , apt a uzel .

Ukázkový výstup:

Počáteční rozdíl u obrázků gcr.io/google-appengine/debian9:latest a gcr.io/google-appengine/debian9:2017-10-18-191738, použití se liší:[history apt node]Načítání obrázku gcr.io /google-appengine/debian9:2017-10-18-191738 ze zdroje Cloud RegistryNačítání obrázku gcr.io/google-appengine/debian9:nejnovější ze zdroje Cloud RegistryComputing rozdíly-----Apt-----Balíčky nalezené pouze v gcr.io/google-appengine/debian9:latest:ŽádnéBalíčky nalezené pouze v gcr.io/google-appengine/debian9:2017-10-18-191738:Žádné Rozdíly mezi verzemi:OBRÁZEK ​​PACKAGE1 (gcr.io/google-appengine/debian9:nejnovější) IMAGE2 (gcr.io/google-appengine/debian9:2017-10-18-191738)-libssl1.1 1.1.0f-3 deb9u1, 3.4M 1.1.0f-3, 3.4M-openssl 1.1.0f-3 deb9u1, 1,2M 1.1.0f-3, 1,2M-tzdata 2017c-0 deb9u1, 2,9M 2017b-1, 2,9M-----Historie-----Řádky historie dockeru nalezené pouze na gcr.io/google- appengine/debian9:latest:Řádky historie NoneDocker nalezené pouze v gcr.io/google-appengine/debian9:2017-10-18-191738:Žádné-----Node-----Balíčky nalezené pouze v gcr.i o/google-appengine/debian9:latest:ŽádnéBalíčky nalezené pouze v gcr.io/google-appengine/debian9:2017-10-18-191738:Žádné Rozdíly mezi verzemi:Žádné

Můžete také porovnat lokálně uložený obraz se vzdáleným obrazem, jak je znázorněno níže.

$ container-diff diff daemon://modified_debian:latest remote://gcr.io/google-appengine/debian9:latest

Další podrobnosti naleznete v oficiálních odkazech na rozdíl mezi kontejnery uvedenými níže.


Linux
  1. Jak porovnávat čísla a řetězce ve skriptu Linux Shell

  2. Jak snížit zátěž registru kontejnerů pomocí Quay.io

  3. Jak vytvořit kontejner LXC pomocí lxcbr0 a virbr0 v CentOS/RHEL

  1. Raspberry Pi Firewall:Jak jej nainstalovat a spravovat pomocí UFW

  2. Jak vypálit obraz ISO na DVD a USB pomocí dd

  3. Jak spravovat registry kontejnerů Linux

  1. Jak shromažďovat systémové a aplikační metriky pomocí Metricbeat

  2. Jak porovnávat a slučovat textové soubory na Linuxu

  3. Jak porovnat a sloučit textové soubory v Linuxu (část 2)