GNU/Linux >> Znalost Linux >  >> Linux

Sestavte si svůj vlastní kontejner na Linuxu

Kontejnery běží v cloudu. Je to proto, že technologie kontejnerů umožňuje webům a webovým aplikacím vytvářet nové kopie sebe sama, když se zvyšuje poptávka. Jsou důvodem, proč stovky milionů lidí mohou používat oblíbené weby, aniž by se tyto weby pod tlakem globálního provozu zhroutily. Kontejnery jsou linuxovou technologií, což znamená, že se spoléhají na kód (konkrétně cgroups a jmenné prostory) jedinečné pro linuxové jádro, takže když spustíte kontejner, používáte Linux. Pomocí obrázků kontejnerů ze stránek jako quay.io a dockerhub.io většina lidí vytváří nové kontejnery specifické pro jejich aplikaci nebo případ použití. To ale některé lidi nutí přemýšlet:Pokud můj kontejner pochází z vývojářské budovy na kontejneru jiného vývojáře, kde jsou ti kontejnery pocházejí? Nebojte se, nejsou to želvy úplně dole. Kontejner můžete vytvořit úplně od začátku a k tomu vám pomůže skvělý open source nástroj s názvem Buildah.

Linuxové kontejnery

  • Co jsou kontejnery systému Linux?
  • Úvod do terminologie kontejnerů
  • Stáhnout:Containers Primer
  • Operátoři Kubernetes:Automatizace platformy pro orchestraci kontejnerů
  • eKniha:Vzory Kubernetes pro navrhování cloudových nativních aplikací
  • Co je Kubernetes?

Specifikace kontejneru

Kontejnery vyrostly z projektů, jako jsou linuxové kontejnery (LXC) a Docker, a je to iniciativa Open Container Initiative (OCI), která zachovává formální specifikaci toho, co kontejner je. Správně sestavený kontejner, který splňuje definici OCI, běží na jakémkoli kontejnerovém motoru kompatibilním s OCI, jako je Podman, Docker, CRI-O a tak dále.

Instalace Buildah

Na Fedoře a CentOS můžete mít Buildah již nainstalovanou. Pokud ne, můžete jej nainstalovat pomocí správce balíčků:

$ sudo dnf install buildah 

Na Debianu a systémech založených na Debianu:

$ sudo apt install buildah 

Konfigurace Buildah 

Protože Buildah vytváří kontejnery, konfigurace prostředí pro něj je stejná jako konfigurace pro Podman. Než budete pokračovat, ať už používáte Podman nebo ne, nakonfigurujte svůj systém na „rootless“ podman.

Vytvoření kontejneru z ničeho

Chcete-li postavit zbrusu nový kontejner s využitím předchozí práce nikoho jako svého základu, použijte speciální název scratch říct Buildah, že chcete vytvořit prázdný kontejner. scratch označení není název obrázku. Je to vaše výjimka z používání existujícího obrázku jako základu pro vaši práci.

$ buildah from scratch 

Tento nový kontejner s názvem working-container ve výchozím nastavení obsahuje malé množství metadat a doslova nic jiného a nyní tajně běží na pozadí. Můžete to vidět pomocí containers dílčí příkaz:

$ buildah kontejnery
ID KONTEJNERU  BUILDER  ID  NÁZEV OBRÁZKU   NÁZEV KONTEJNERU
dafc77921c0c     *         scratch      pracovní kontejner

Chcete-li kontejner spustit, musíte nejprve použít unshare dílčí příkaz (pokud nespouštíte Buildah jako root):

$ buildah unshare 

Potvrďte, že váš pracovní kontejner nemá žádnou funkci (v tomto případě se očekává odezva na selhání):

$ buildah run working-container sh
ERRO[0000] container_linux.go:349:spuštění procesu kontejneru způsobilo "exec:\"sh\":spustitelný soubor nebyl nalezen v $PATH"

Přidání do vašeho kontejneru

Chcete-li do kontejneru přidat příkazy, musíte jej nejprve připojit. Obrázky kontejnerů jsou uloženy ve vašem ~/.local adresář ve výchozím nastavení:

$ buildah mount working-container
~/.local/share/containers/storage/overlay/b76940e6fe4efad7a0adca3b5399ee12055ddd733bbe273120dcae36a2e6c12f/merged

S kontejnerem připojeným k vašemu ~/.local adresář (nebo /var/lib/containers/ v případě spuštění jako root) můžete balíčky přidávat pomocí správce balíčků. --releasever musí odpovídat distribuci, kterou používáte při sestavování kontejneru.

[Fedora]$ instalace sudo dnf --installroot \
~/.local/share/containers/storage/overlay/b76940e6fe4efad7a0adca3b5399ee12055ddd733bbe273120dcaec-16a2>sht
merged /3fase> \
--setopt install_weak_deps=false -y

Přesná metoda přidávání balíčků závisí na vaší distribuci a správci balíčků, který používá. Například na mé ploše Slackware používám installpkg :

[Slack]$ installpkg --root ~/.local/share/containers/storage/overlay/b76940e6fe4efad7a0adca3b5399ee12055ddd733bbe273120dcae36a2e6c12f/61-7mp<80/6-7 mp/smrged 
 Nyní můžete spustit kontejner a zkusit něco jednoduchého, jako je spuštění shellu:

$ buildah run working-container bash
# bash --version
GNU bash, verze 5.0.17(1)-release (x86_64-redhat-linux-gnu)
Copyright ( C) 2019 Free Software Foundation, Inc.
Licence GPLv3+:GNU GPL verze 3 nebo novější

Toto je svobodný software; můžete jej měnit a dále distribuovat.
V rozsahu povoleném zákonem SE NEVZTAHUJE ŽÁDNÁ ZÁRUKA.

Konfigurace kontejneru

buildah config dílčí příkaz vám poskytuje přístup k běžným atributům, jako je výchozí příkaz, který chcete, aby váš kontejner spustil při jeho spuštění, nastavení proměnných prostředí, nastavení výchozího prostředí, definice autora, architektury a názvu hostitele a mnoho dalšího. Představte si například, že jste přidali balíček obsahující skript shellu s názvem motd.sh a chcete, aby se spustil při spuštění kontejneru:

$ buildah config --author "Seth Kenlon" \
--os "Slackware" --shell /bin/bash \
--cmd /usr/bin/motd.sh working-container

Distribuce kontejneru

Po dokončení konstrukce kontejneru jej můžete zachovat jako obrázek pomocí commit dílčí příkaz.

$ buildah commit working-container my_image 

Postavte si to pomocí Buildah

Kontejnery se někdy zdají kouzelné, ale kouzelné nejsou. Jsou vytvořeny od základů a jsou dostatečně flexibilní, že jakmile obrázek existuje, ostatní jej mohou použít k vytvoření nových kontejnerů a obrázků kontejnerů, které zaplní jiné místo. Není nutné začínat od nuly, ale pokud vás zajímá, jak obrázky začínají, nebo chcete zkusit vytvořit obrázek podle vašich požadavků, Buildah je nástroj, který můžete použít.


Linux
  1. Vytvořte si vlastní technologii na Linuxu

  2. Vydejte se na dobrodružství ve svém linuxovém terminálu

  3. Zazimujte výzvu Bash v Linuxu

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

  2. Jak napsat svůj vlastní modul linuxového jádra s jednoduchým příkladem

  3. Vytváření vlastních metabalíčků Kali Linux

  1. 4 Linuxové technologie zásadní pro kontejnery

  2. Jak nastavit tiskárnu v systému Linux

  3. Jaká je výhoda kompilace vlastního linuxového jádra?