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
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/
Das von Red Hat entwickelte Container-Build-Tool firmiert jetzt als Release 1.0