GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Erstellen Sie Ihren eigenen Container unter Linux

Container werden in der Cloud ausgeführt. Das liegt daran, dass die Containertechnologie es Websites und Web-Apps ermöglicht, bei steigender Nachfrage neue Kopien von sich selbst zu erstellen. Sie sind der Grund dafür, dass Hunderte Millionen Menschen beliebte Websites nutzen können, ohne dass diese Websites unter dem Druck des globalen Verkehrs einknicken. Container sind eine Linux-Technologie, was bedeutet, dass sie auf Code angewiesen sind (insbesondere cgroups und Namespaces), die für den Linux-Kernel einzigartig sind, wenn Sie also einen Container ausführen, führen Sie Linux aus. Unter Verwendung von Container-Images von Websites wie quay.io und dockerhub.io erstellen die meisten Leute neue Container, die spezifisch für ihre Anwendung oder ihren Anwendungsfall sind. Aber das lässt einige Leute fragen:Wenn mein Container von einem Entwickler stammt, der auf dem Container eines anderen Entwicklers errichtet wurde, woher kommen dann die Container kommen aus? Keine Sorge, es sind nicht ganz unten Schildkröten. Sie können einen Container von Grund auf neu erstellen, und es gibt ein großartiges Open-Source-Tool namens Buildah, das Ihnen dabei hilft.

Linux-Container

  • Was sind Linux-Container?
  • Eine Einführung in die Containerterminologie
  • Download:Einführung in Container
  • Kubernetes-Operatoren:Automatisierung der Container-Orchestrierungsplattform
  • eBook:Kubernetes-Muster zum Entwerfen cloudnativer Apps
  • Was ist Kubernetes?

Behälterspezifikationen

Container sind aus Projekten wie Linux-Containern (LXC) und Docker hervorgegangen, und es ist die Open Container Initiative (OCI), die die formale Spezifikation dessen, was ein Container ist, verwaltet. Ein ordnungsgemäß zusammengestellter Container, der die OCI-Definition erfüllt, läuft auf jeder OCI-kompatiblen Container-Engine wie Podman, Docker, CRI-O usw.

Buildah installieren

Unter Fedora und CentOS ist Buildah möglicherweise bereits installiert. Wenn nicht, können Sie es mit Ihrem Paketmanager installieren:

$ sudo dnf install buildah

Auf Debian und Debian-basierten Systemen:

$ sudo apt install buildah

Buildah konfigurieren 

Da Buildah Container erstellt, entspricht die Konfiguration Ihrer Umgebung dafür der Konfiguration für Podman. Unabhängig davon, ob Sie Podman verwenden oder nicht, konfigurieren Sie Ihr System für „rootless“ Podman, bevor Sie fortfahren.

Einen Container aus dem Nichts bauen

Um einen brandneuen Container zu bauen, der die vorherige Arbeit von niemandem als Grundlage verwendet, verwenden Sie den speziellen Namen scratch um Buildah mitzuteilen, dass Sie einen leeren Container erstellen möchten. Der scratch Bezeichnung ist kein Bildname. Es ist Ihre Befreiung davon, ein vorhandenes Bild als Grundlage für Ihre Arbeit zu verwenden.

$ buildah from scratch

Dieser neue Container namens working-container enthält standardmäßig eine kleine Menge Metadaten und buchstäblich nichts anderes, und es läuft jetzt heimlich im Hintergrund. Sie können es mit den containers sehen Unterbefehl:

$ buildah containers
CONTAINER ID  BUILDER  ID  IMAGE NAME   CONTAINER NAME
dafc77921c0c     *         scratch      working-container

Um den Container auszuführen, müssen Sie zuerst den unshare verwenden Unterbefehl (es sei denn, Sie führen Buildah als root aus):

$ buildah unshare

Bestätigen Sie, dass Ihr Arbeitscontainer keine Funktionalität hat (Fehler erwartete Antwort in diesem Fall):

$ buildah run working-container sh
ERRO[0000] container_linux.go:349: starting container process caused "exec: \"sh\": executable file not found in $PATH"

Hinzufügen zu Ihrem Container

Um Ihrem Container Befehle hinzuzufügen, müssen Sie ihn zuerst mounten. Container-Images werden in Ihrem ~/.local gespeichert Verzeichnis standardmäßig:

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

Wenn der Container in Ihrem ~/.local gemountet ist Verzeichnis (oder /var/lib/containers/ im Falle der Ausführung als root), können Sie Pakete mit Ihrem Paketmanager hinzufügen. Der --releasever muss mit der Distribution übereinstimmen, die Sie ausführen, während Sie den Container erstellen.

[Fedora]$ sudo dnf install --installroot \
~/.local/share/containers/storage/overlay/b76940e6fe4efad7a0adca3b5399ee12055ddd733bbe273120dcae36a2e6c12f/merged \
--releasever 33 \
bash coreutils \
--setopt install_weak_deps=false -y

Die genaue Methode zum Hinzufügen von Paketen hängt von Ihrer Distribution und dem verwendeten Paketmanager ab. Auf meinem Slackware-Desktop verwende ich beispielsweise installpkg :

[Slack]$ installpkg --root ~/.local/share/containers/storage/overlay/b76940e6fe4efad7a0adca3b5399ee12055ddd733bbe273120dcae36a2e6c12f/merged \
/tmp/bash-5.0.17-x86_64-1_SMi.txz

Jetzt können Sie den Container ausführen und etwas Einfaches ausprobieren, z. B. eine Shell starten:

$ buildah run working-container bash
# bash --version
GNU bash, version 5.0.17(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Container konfigurieren

Die buildah config Unterbefehl gibt Ihnen Zugriff auf allgemeine Attribute wie den Standardbefehl, den Ihr Container ausführen soll, wenn er gestartet wird, das Festlegen von Umgebungsvariablen, das Festlegen der Standard-Shell, das Definieren des Autors, der Architektur und des Hostnamens und vieles mehr. Stellen Sie sich zum Beispiel vor, dass Sie ein Paket hinzugefügt haben, das ein Shell-Skript mit dem Namen motd.sh enthält , und Sie möchten, dass es ausgeführt wird, wenn der Container gestartet wird:

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

Verteilen Sie Ihren Container

Wenn Sie mit dem Erstellen Ihres Containers fertig sind, können Sie ihn mit commit als Bild beibehalten Unterbefehl.

$ buildah commit working-container my_image

Erstellen Sie es mit Buildah

Container wirken manchmal magisch, aber sie sind keine Magie. Sie werden von Grund auf neu erstellt und sind flexibel genug, dass andere, sobald ein Image existiert, es verwenden können, um neue Container und Container-Images zu erstellen, die eine andere Nische füllen. Es ist nicht notwendig, bei Null anzufangen, aber wenn Sie neugierig sind, wie Bilder beginnen, oder versuchen möchten, ein Bild speziell für Ihre Anforderungen zu erstellen, ist Buildah das geeignete Tool.


Linux
  1. Erstellen Sie Ihre eigene Technologie unter Linux

  2. Begeben Sie sich in Ihrem Linux-Terminal auf ein Abenteuer

  3. Machen Sie Ihre Bash-Eingabeaufforderung unter Linux winterfest

  4. Fügen Sie diese 4 Tools zu Ihrer Linux-Container-Toolbox hinzu

  5. Erstellen Sie Ihre eigenen Kali Linux Metapakete

Planen Sie Ihren eigenen Feiertagskalender auf der Linux-Befehlszeile

Erstellen Sie mit OpenMediaVault Ihr eigenes NAS

So erstellen Sie Ihre eigene Linux-Distribution mit Yocto

So erstellen Sie Ihren eigenen IPsec-VPN-Server unter Linux

DIY NAS Freenas Server - Erstellen Sie Ihr eigenes NAS mit Freenas

Wie kann man ganz einfach seine eigene Linux-Distribution erstellen?