Die Datenschutz-Grundverordnung nähert sich mit großen Schritten. Und auch in Sachen Hackerangriffen dürfen sich Unternehmen 2018 wieder auf einiges gefasst ... (mehr)

Vom Image zum Container

Wurde das Image erfolgreich erzeugt, lässt sich damit im nächsten Schritt ein neuer Container erzeugen:

# myecho=$(buildah from echo-image)
# echo $myecho
echo-image-working-container
# buildah run $myecho
Hello World...

Da buildah unterschiedliche Transportwege für die Images unterstützt, lässt sich ein neues Image auch problemlos in einem Docker- oder ostree-Storage ablegen. Die unterstützten Transportwege sind in der Manpage "buildah-from" aufgeführt. Soll nun beispielsweise ein neues Image auf Basis des zuletzt gestarteten Containers erzeugt werden, sodass es auch innerhalb einer Docker-basierten Umgebung zur Verfügung steht, führt ein commit mit der gewünschten Transport-Methode zum Ziel (Listing 2).

Listing 2: Commit für Docker



# buildah commit $myecho docker-daemon:myecho-docker:latest
# systemctl start docker
# docker images
REPOSITORY                         TAG             IMAGE ID               CREATED           SIZE
docker.io/myecho-docker       latest            0dbbcff4336a          7 weeks ago         251.7 MB

Die Abfrage der Docker-Images funktioniert allerdings nur dann, wenn der Docker-Daemon auf dem Host aktiv ist, sonst kommt es zu einer Fehlermeldung.

Andersherum funktioniert dies natürlich genauso. Wer also beispielsweise Docker-Container dem buildah-Tool zur Verfügung stellen möchte, um somit das Image auch im Default-Container-Storage zu speichern, gibt beim Download des Container-Images den Docker-Transportweg an:

# docker=$(buildah from docker-daemon:myecho-docker:latest)
# systemctl stop docker
# echo $docker
myecho-docker-working-container
# dockermount=$(buildah mount $docker)
# echo $dockermount
/var/lib/containers/storage/overlay/9aa3ddf74842f5ef7b31ca9a18c592bce0816ea2536a8ea69b9e114075dd7bf6/merged
# buildah run $docker
Hello World...

Abschließend sei noch darauf hingewiesen, dass buildah natürlich auch die Low-Level-Informationen zu einem Image oder Container im JSON-Format anzeigen kann. Dies ist hilfreich, um beispielsweise herauszubekommen, welche Label in einem Image zum Einsatz kommen:

# buildah inspect --type image myecho-docker:latest

Für einen Container sieht der Befehl analog aus:

# buildah inspect --type container $docker

Fazit

Mit buildah steht ein umfassendes Tool zum Erstellen und Verwalten von Container-Images zur Verfügung. Dank der integrierten Container-Bibliotheken kann das Tool komplett unabhängig von Docker arbeiten und eignet sich somit prima für Umgebungen, in denen eine alternative Runtime zum Betrieb von Containern zum Einsatz kommt.

(of)

Link-Codes

[1] containerd: https://containerd.io/

[2] OCI Runtime Specification: https://github.com/opencontainers/runtime-spec/

[3] OCI Image Format Specification: https://github.com/opencontainers/image-spec/

[4] OCI Image Tools: https://github.com/opencontainers/image-tools/

[5] Buildah: https://github.com/projectatomic/buildah/

[6] Buildah-RPM-Pakete: https://pkgs.org/download/buildah/

[7] containers/image Repository: https://github.com/containers/image/

[8] containers/storage Repository: https://github.com/containers/storage/

[9] Skopeo: https://github.com/projectatomic/skopeo/

[10] runC: https://github.com/opencontainers/runc/

comments powered by Disqus
Mehr zum Thema

Container-Bauwerkzeug Buildah wird 1.0

Das von Red Hat entwickelte Container-Build-Tool firmiert jetzt als Release 1.0

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2020