GNU/Linux >> Znalost Linux >  >> Linux

Přidejte tyto 4 nástroje do svého kontejneru nástrojů Linux

Když potřebujete správný nástroj, není nic jako jít do místního železářství a projít se uličkami. Je skvělé jít uličkou ručního nářadí a prohlédnout si všechny šroubováky, kladiva, šestihranné klíče, svinovací metry a další. Když si myslíte, že jste objevili ten správný nástroj, napadne vás myšlenka, když to dokážu s ručním nástrojem, opravdu to zvládnu s perfektním elektrickým nástrojem!

Alespoň to mi říká moje žena a vidíte, je to ta šikovná osoba v naší rodině. Moje oblíbené nástroje jsou technické nástroje. Dejte mi uličku s grafickými kartami v obchodě s počítači a budu šťastný táborník.

Nedávno jsem dělal demo na Podman Community Meeting, kde jsem předváděl některé z lesklejších nových kontejnerových nástrojů, které jsme vyvinuli pro Podman a Buildah. S Podmanem v3.0 jsme měli mnoho velkých oznámení, takže jsem si myslel, že některé z těchto nástrojů mohly být zastíněny. Když jsem z této demonstrace obdržel nějakou hezkou zpětnou vazbu, cítil jsem, že by mohl být užitečný i další příspěvek. Pojďme se tedy ponořit do těchto zářivých nových kontejnerových nástrojů.

Změňte první FROM ve svém souboru kontejneru

Je tu nový --from možnost v buildah bud příkaz, který se brzy dostane do Podman v3.0. Tato možnost vám umožňuje nahradit hodnotu spojenou s první – a pouze první – OD výpis v souboru Containerfile. Například, pokud máme tento Containerfile:

# cat ~/Containerfile.multifrom
FROM fedora as builder
FROM busybox
COPY --from=builder /bin/df /tmp/df_tester

Můžeme provést první spuštění a ukáže se, že jsme použili fedora obrázek kontejneru. Poté busybox se použije obrázek a nakonec se zkopírují soubory z fedora 's /bin/df adresáře do busybox obrázky' /tmp/df_tester adresář.

# buildah bud -t multi -f ~/Containerfile.multifrom .
STEP 1: FROM fedora AS builder
Resolved "fedora" as an alias (/etc/containers/registries.conf.d/shortnames.conf)
Getting image source signatures
Copying blob 157ab8011454 done  
Copying config 9f2a560376 done  
Writing manifest to image destination
Storing signatures
--> 9f2a5603764
STEP 2: FROM busybox
Resolved "busybox" as an alias (/root/.config/containers/short-name-aliases.conf)
Getting image source signatures
Copying blob 4c892f00285e done  
Copying config 22667f5368 done  
Writing manifest to image destination
Storing signatures
STEP 3: COPY --from=builder /bin/df /tmp/df_tester
STEP 4: COMMIT multi
Getting image source signatures
Copying blob 6b245f040973 skipped: already exists  
Copying blob 9b68b051b385 done  
Copying config 187c956137 done  
Writing manifest to image destination
Storing signatures
--> 187c9561378
187c9561378efb043dfd0e8fa9c0afbdc0cf2faeb244e0dd7f2003321feab524

Nyní si představte reálnější situaci, takovou, kde je vaše OD příkaz ukazuje na vlastní obrázek s řadou značek pro různé verze obrázku. Bylo by hezké, zvláště v prostředí CI, pouze předat obrázek kontejneru, který chcete použít při příštím spuštění, místo toho, abyste znovu vytvořili celý Dockerfile. To je úloha, kterou --from vyplní.

V tomto příkladu spustíme stejný bud příkaz, ale tentokrát přidáme --from alpine:latest .

# buildah bud -t multi -f ~/Containerfile.multifrom --from alpine:latest .
STEP 1: FROM alpine:latest AS builder
Resolved "alpine" as an alias (/etc/containers/registries.conf.d/shortnames.conf)
Getting image source signatures
Copying blob 4c0d98bf9879 done  
Copying config e50c909a8d done  
Writing manifest to image destination
Storing signatures
--> e50c909a8df
STEP 2: FROM busybox
STEP 3: COPY --from=builder /bin/df /tmp/df_tester
STEP 4: COMMIT multi
Getting image source signatures
Copying blob 6b245f040973 skipped: already exists  
Copying blob b498f23d5c32 done  
Copying config d7e92107ed done  
Writing manifest to image destination
Storing signatures
--> d7e92107edf
d7e92107edf42f046f6a7faddade4825ef1c2361ae21eb0ac3694871dcdb496c

Můžete vidět, že alpine:latest obrázek kontejneru byl poprvé použit a nyní po busybox obrázek byl vytvořen, soubory z alpine /bin/df byly zkopírovány do /tmp/df_tester adresář na busybox . Hodnota prvního FROM příkaz v Containerfile byl nahrazen argumentem, který jsme předali s --from možnost.

[ Mohli byste si také rádi přečíst: Kontejnery bez kořenů pomocí aplikace Podman ]

Přijmout vstup během sestavování

Dalším novým nástrojem je --stdin možnost, která jde spolu s buildah bud nebo podman build (od verze Podman v3.0). Když použijete tuto možnost, proces sestavení se pozastaví a požádá o vstup z klávesnice, pokud o to proces běžící během procedury sestavení požádá.

Podívejte se na tento Containerfile:

# cat /root/Containerfile.stdin
FROM ubi8
RUN yum install iputils
RUN touch /tmp/done

Tento Containerfile používá ubi8 image a poté nainstaluje iputils . Jak pravděpodobně tušíte, yum příkaz nás požádá o ověření instalace iputils . Podívejme se, co se stane bez --stdin možnost ve hře.

# cat /root/Containerfile.stdin
FROM ubi8
RUN yum install iputils
RUN touch /tmp/done

# cat /root/Containerfile.stdin
FROM ubi8
RUN yum install iputils
RUN touch /tmp/done

# buildah bud -t mystdin -f ~/Containerfile.stdin .
STEP 1: FROM ubi8
Resolved "ubi8" as an alias (/etc/containers/registries.conf.d/shortnames.conf)
Getting image source signatures
Copying blob d9e72d058dc5 done  
Copying blob cca21acb641a done  
Copying config 3269c37eae done  
Writing manifest to image destination
Storing signatures
STEP 2: RUN yum install iputils
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

Red Hat Universal Base Image 8 (RPMs) - BaseOS  2.5 MB/s | 774 kB     00:00    
Red Hat Universal Base Image 8 (RPMs) - AppStre 7.6 MB/s | 5.0 MB     00:00    
Red Hat Universal Base Image 8 (RPMs) - CodeRea  75 kB/s |  13 kB     00:00    
Dependencies resolved.
================================================================================
 Package        Architecture  Version                 Repository           Size
================================================================================
Installing:
 iputils        x86_64        20180629-2.el8          ubi-8-baseos        149 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 149 k
Installed size: 361 k
Is this ok [y/N]: Operation aborted.
error building at STEP "RUN yum install iputils": error while running runtime: exit status

Když yum nainstalovali iputils , požádal o potvrzení a selhal, protože nikdy nedostal odpověď. Nyní se podívejme, co se stane s --stdin možnost ve hře.

# buildah bud -t mystdin --stdin -f ~/Containerfile.stdin .
STEP 1: FROM ubi8
STEP 2: RUN yum install iputils
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

Red Hat Universal Base Image 8 (RPMs) - BaseOS  2.8 MB/s | 774 kB     00:00    
Red Hat Universal Base Image 8 (RPMs) - AppStre 7.5 MB/s | 5.0 MB     00:00    
Red Hat Universal Base Image 8 (RPMs) - CodeRea  86 kB/s |  13 kB     00:00    
Dependencies resolved.
================================================================================
 Package        Architecture  Version                 Repository           Size
================================================================================
Installing:
 iputils        x86_64        20180629-2.el8          ubi-8-baseos        149 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 149 k
Installed size: 361 k
Is this ok [y/N]: y

Na blogu to nevypadá tak dobře jako osobně, ale proces sestavení se zastaví na řádku Je to v pořádku [y/N]: a zadal jsem znak y a sestavení pokračovalo (viz výstup níže).

Downloading Packages:
iputils-20180629-2.el8.x86_64.rpm               972 kB/s | 149 kB     00:00    
--------------------------------------------------------------------------------
Total                                           952 kB/s | 149 kB     00:00    
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Installing       : iputils-20180629-2.el8.x86_64                          1/1
  Running scriptlet: iputils-20180629-2.el8.x86_64                          1/1
  Verifying        : iputils-20180629-2.el8.x86_64                          1/1
Installed products updated.

Installed:
  iputils-20180629-2.el8.x86_64                                                

Complete!
STEP 3: RUN touch /tmp/done
STEP 4: COMMIT mystdin
Getting image source signatures
Copying blob 92538e92de29 skipped: already exists  
Copying blob eb7bf34352ca skipped: already exists  
Copying blob f9ed641975cb done  
Copying config b2742f08a7 done  
Writing manifest to image destination
Storing signatures
--> b2742f08a7a
b2742f08a7ae2cb76a2cd0c481f2d2d66b303379d23e5260577ea09476a8a486

Toto je další zjednodušující příklad, zejména proto, že můžete přidat -y argument do yum příkaz. Přesto mohou existovat další příkazy, které byste chtěli spouštět během procesu sestavování a do kterých byste chtěli snadno získat významnější vstup.

Najděte značky pro obrázek kontejneru

Tento další nástroj, který je pro Podman relativně nový, zobrazuje všechny značky pro obrázek kontejneru v registru. Používám obrázky na quay.io pro Buildah, Podman a Skopeo a někdy chci použít konkrétní verzi jednoho z projektů a nemůžu si vzpomenout, která tam je. Pokud znáte Skopeo, funguje v tomto prostoru opravdu dobře. Ale pokud jste nenainstalovali Skopeo lokálně nebo z nějakého důvodu nemůžete, pak nové --list-tags možnost pro podman search příkaz je váš lístek.

Pojďme se tedy podívat na všechny značky, které má stabilní obrázek Podman na quay.io:

# podman search --list-tags quay.io/podman/stable
NAME                   TAG
quay.io/podman/stable  v1.4.4
quay.io/podman/stable  v1.4.2
quay.io/podman/stable  v1.5.1
quay.io/podman/stable  v1.5.0
quay.io/podman/stable  v1.6.2
quay.io/podman/stable  auto
quay.io/podman/stable  v1.6
quay.io/podman/stable  v1.9.0
quay.io/podman/stable  v1.9.1
quay.io/podman/stable  v2.0.2
quay.io/podman/stable  v2.0.6
quay.io/podman/stable  v2.1.1
quay.io/podman/stable  master
quay.io/podman/stable  latest

Rychlé, snadné a praktické.

Použití obrázku kontejneru Skopeo

Tento nástroj je něco jako ying do posledních nástrojů yang . Projekt Skopeo je plný mnoha nástrojů, které lze použít s obrázky kontejnerů. Také vám ukáže seznam značek, které má obrázek v registru. Skopeo může také zobrazovat informace o registru, umožňuje vám kopírovat bitovou kopii kontejneru mezi mechanismy úložiště včetně registrů, synchronizovat registr kontejnerů, mazat bitovou kopii z registru a další.

Nyní se zde nebudu ponořit do každého z těchto příkazů Skopeo. Jen udělám možnost vyhledávání, abych zobrazil značky. Zvrat je v tom, že budu používat Podman pouze ke spuštění quay.io/skopeo/stable:latest image, čímž odpadá nutnost mít nainstalované Skopeo a přitom mít stále k dispozici všechny jeho funkce.

Pojďme si tedy uvést značky quay.io/podman/stable:latest obrázek znovu, ale tentokrát prostřednictvím obrázku kontejneru Skopeo:

# podman run quay.io/skopeo/stable:latest list-tags docker://quay.io/podman/stable
Trying to pull quay.io/skopeo/stable:latest...
Getting image source signatures
Copying blob 6629904ed3b7 done  
Copying blob 2b74ed94761c done  
Copying blob 692512e477a1 done  
Copying blob 166a3cbbffd1 done  
Copying blob b1e90be38d32 done  
Copying blob a5dc7d6cfd62 done  
Copying blob a3ed95caeb02 done  
Copying blob a3ed95caeb02 done  
Writing manifest to image destination
Storing signatures
{
    "Repository": "quay.io/podman/stable",
    "Tags": [
        "v1.4.4",
        "v1.4.2",
        "v1.5.1",
        "v1.5.0",
        "v1.6.2",
        "auto",
        "v1.6",
        "v1.9.0",
        "v1.9.1",
        "v2.0.2",
        "v2.0.6",
        "v2.1.1",
        "master",
        "latest"
    ]
}

Při prvním spuštění tohoto příkazu je pomalejší než ekvivalent Podmana, protože vznikají náklady na skopeo vytahovaný obrázek kontejneru. Poté je rychlost ekvivalentní u sekundárních běhů a poté můžete provést jakýkoli jiný příkaz Skopeo, který chcete také.

Nechám vás dále prozkoumávat sami a navrhuji zahájit průzkum knihou Valentina Rothberga Jak spustit Skopeo v kontejneru . Myslím, že obrázek kontejneru Skopeo je nejzářivější nástroj v mém kontejneru nástrojů.

[ Začínáte s kontejnery? Podívejte se na tento bezplatný kurz. Nasazení kontejnerových aplikací:technický přehled. ]

Všechny ty zářné nové nástroje

Moje žena nyní může mít stále všechny své nablýskané nástroje z místního železářství a já si své nové kontejnerové nástroje nechám ve své virtuální sadě nástrojů. Doufám, že tyto nové příkazy a možnosti budou užitečné ve vašem vlastním panelu nástrojů.


Linux
  1. Sestavte si svůj vlastní kontejner na Linuxu

  2. 4 Linuxové nástroje pro vymazání vašich dat

  3. Jaký je rozdíl mezi linuxovým kontejnerem a obrázkem?

  1. Přidejte videa jako tapetu na plochu Linuxu

  2. 20 jednořádkových příkazů Linuxu, které můžete přidat do svého panelu nástrojů

  3. Přidejte časové razítko do obrázku z příkazového řádku Linuxu

  1. Upgradujte hardware počítače se systémem Linux pomocí nástrojů s otevřeným zdrojovým kódem

  2. 7 zábavných funkcí pro přenos kontejnerů/obrázků v Linuxu

  3. 6 nezbytných nástrojů s otevřeným zdrojovým kódem pro zabezpečení vašeho linuxového serveru