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)

Scratch-Image anlegen

Wer ein komplett neues Image erzeugen möchte, kann hierfür zuerst einen leeren Container erzeugen, für den lediglich einige Metadaten angelegt werden.

# new=(buildah from scratch)
# newmount=$(buildah mount $new)

Im Anschluss werden dann die gewünschten Pakete in das bisher noch leere Container-Image installiert:

# dnf install -y --installroot $newmount --release 27 bash coreutils --setopt install_weak_deps=false

Auf dem Host-System kommt hier ein Fedora zum Einsatz, weshalb die Pakete auch aus diesem Repository installiert werden. Zu diesem Zeitpunkt existiert nun ein Image mit einer minimalen Laufzeitumgebung für Shell-Skripte. Das folgende Beispiel demonstriert, wie sich Skripte automatisch beim Starten des Containers ausführen lassen:

# echo '#!/bin/sh
> echo -e "Hello world...\n"' > $newmount/tmp/hello.sh
# chmod +x $newmount/tmp/hello.sh
# buildah config --cmd /tmp/hello.sh $new

Die Änderungen können Sie dann in ein neues Image schreiben, auf dessen Basis sich neue Container erzeugen lassen. Diese führen beim Start dann jeweils das Skript aus, das zuvor hinter der buildah-"-cmd"-Option angegeben wurde.

# buildah commit $new minimal-image
# minimal=$(buildah from minimal-image)
# buildah run $minimal
Hello world...

Dockerfiles nutzen

Viele Anwender werden sicher Dockerfiles herumliegen haben, mit denen bisherige Docker-basierte Images erzeugt wurden. Buildah besitzt eine Funktion "build-using-dockerfile" (bud), mit der sich ein Image auf Basis eines eben solchen Dockerfiles erzeugen lässt. An dieser Stelle soll noch einmal explizit darauf hingewiesen werden, dass für diese Funktion kein Docker-Daemon aktiv oder installiert sein muss. Das folgende Beispiel verwendet ein sehr einfaches Dockerfile zusammen mit einem Einzeiler-Skript, das beim Start des Containers einfach "Hello World..." ausgibt:

# cat Dockerfile
FROM registry.fedoraproject.org/fedora
ADD myecho /usr/local/bin
ENTRYPOINT "/usr/local/bin/myecho"
# echo 'echo -e "Hello World...\n"' > myecho
# chmod +x myecho

Rufen Sie buildah mit der Option "bud" auf, werden die einzelnen Anweisungen aus dem Dockerfile abgearbeitet und das fertige Image landet im lokalen Image-Store. Dieser ist in der Datei "/etc/containers/storage.conf" definiert und wird von sämtlichen Tools verwendet, die auf die Container/Storage-Bibliotheken [7][8] zurückgreifen:

# buildah bud -t echo-image .
STEP 1: FROM registry.fedoraproject.org/fedora
[...]
STEP 2: ADD myecho /usr/local/bin
STEP 3: ENTRYPOINT "/usr/local/bin/myecho"
STEP 4: COMMIT containers-storage:[overlay@/var/lib/containers/storage+/var/run/containers/storage:overlay.override_kernel_check=true]docker.io/library/echo-image:latest
comments powered by Disqus

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