Warum ein eigenes Docker Raspian Basis-Image erstellen?
Ganz einfach: weil es geht!
Nebenbei kann ich genau das in das Raspian Basis-Image packen was ich immer brauche und kann - für mich - uninteressante Teile weglassen.
Das folgende Howto habe ich mir durch lesen von Dokumentationen, suche im Internet und ausprobieren zusammen gesucht. Es spiegelt meinen Wissentstand wieder und hat keinen Anspruch auf Vollständigkeit und Richtigkeit!
Die Veröffentlichung dieses Howtos erfolgt in der Hoffnung, dass es dem Ein oder Anderen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK.
Um Raspian in ein beliebiges Verzeichnis installieren zu können wird "debootstrap" benötigt.
apt-get update
apt-get install debootstrap
Hier wird Raspian Buster verwendet. Für andere/neue Versionen hilft ein Blick auf <http://archive.raspbian.org/raspbian> weiter.
Als <Verzeichnis-Name> kann ein beliebiges Verzeichnis angegeben werden. Es muss zuvor nicht angelegt werden denn es wird automatisch im aktuellen Arbeitsverzeichnis angelegt.
debootstrap --variant=minbase --components=main,contrib,non-free --include=dirmngr,apt-transport-https --arch=armhf buster <Verzeichnis-Name> http://archive.raspbian.org/raspbian
Um Raspian in ein beliebiges Verzeichnis installieren zu können wird "debootstrap" benötigt.
mount --bind /dev <Verzeichnis-Name>/dev
mount --bind /dev/pts <Verzeichnis-Name>/dev/pts
mount --bind /proc <Verzeichnis-Name>/proc
mount --bind /sys <Verzeichnis-Name>/sys
chroot <Verzeichnis-Name>
Nun wird es Zeit die Pakete zu Installieren die gebraucht werden. Zuvor teilen wir apt-get aber mit, dass es nicht immer rückfragen soll.
echo "APT::Get::Assume-Yes \"true\";" | tee /etc/apt/apt.conf.d/10-assume_yes
Jetzt können mittels "apt-get" zusätzliche Pakete installiert werden. Hier ist Zurückhaltung angesagt da ja ein Basis-Image - ohne unnötigen Ballast - erzeugt werden soll.
Danach können unnötige Pakete entfernt und "apt-get" aufgeräumt werden. Die Liste hier kann nach eigenen Vorstellungen erweitert werden.
apt-get remove --allow-remove-essential e2fsprogs e2fslibs nano pinentry-curses whiptail kmod iptables iproute2 dmidecode
apt-get clean
find /var/lib/apt/lists/ -maxdepth 2 -type f -delete
exit
umount /dev
umount /dev/pts
umount /proc
umount /sys
Sollte es nicht gelingen -> ein Reboot tut gut!
tar --verbose --create --file <Verzeichnis-Name>.tar --directory <Verzeichnis-Name> .
Achtung: Den Punkt am Ende nicht vergessen!
cat <Verzeichnis-Name>.tar | docker import - <Image-Name>
Das war es dann auch schon! Ab jetzt steht ein eigenes Docker Basis-Image zur Verfügung.
Im HowTo "Eigenes Apache2/Perl-Image erzeugen" wird dieses als Basis verwendet.