Heute schreibe ich mal einen Beitrag zum compilen von Docker (aktuell Version 1.11.1) auf der armhf Plattform.
Warum armhf? Weil viele kleine und stromsparende Platinen darauf basieren und man als bastler sowas gerne mal rumliegen hat. (RaspberryPi 1-3+Zero, Odroid-X2/U2/U3/XU*, BananaPi und wie sie alle heißen)
Das größte Problem für mich war eigentlich, dass der Daemon nicht starten wollte. Warum wollte er nicht? Das konnte ich erstmal gar nicht so genau sagen, wo es logs zum daemon gab habe ich erst im nachhinein nachgeforscht und begann so meinen Blindflug mit dem ausprobieren des manuellen startens des Docker Daemons via “docker -d …”. Das klappte natürlich nicht.
Warum klappte das nicht? “-d” ist deprecated, sowas doofes aber auch, denn es steht gefühlt nirgendswo und ist auch nicht in der Ausgabe von Docker dokumentiert, wie der Daemon denn gestartet wird. (“docker daemon” ist nämlich nicht in der ausgabe, wenn man docker in der konsole startet.
Nun aber zum eigentlichen Thema: Docker auf armhf bauen – in meinem Fall auf einem Ubuntu.
Viele Pakete sind bei mir aus Bastel und Bauzwecken schon vorinstalliert, deswegen verlinke ich hier auch mal auf eine grundsätzlich gute Basis Bauanleitung:
https://github.com/umiddelb/armhf/wiki/Installing,-running,-using-docker-on-armhf-(ARMv7)-devices
“v1.9.1” ersetzt Ihr natürlich gegen den Branch aus der docker repo, den ihr bauen wollt, vorzugsweise den neuesten stabilen.
“docker.io” ersetzt Ihr durch docker, denn docker.io heißt bei ubuntu das Paket, nicht aber das init script.
Damit wären wir schon beim eigentlichen Thema: Init Script. Urspünglich war ich davon ausgegangen, dass mein System die Scripte in /etc/init.d/* benutzt zum starten der jobs. Wenn das der Fall gewesen wäre hätte ich ziemlich schnell mein Ziel gefunden.
Dann dachte ich daran, dass ja mittlerweile jeder auf systemd schwört und habe dort die scripte angepasst – wieder kein treffer.
Irgendwann habe ich dann rausgefunden, dass ubuntu ja upstart benutzt und in /etc/init/docker.conf endlich die Datei gefunden, die angepasst werden muss. Hier müsst ihr den Parameter “-d” durch “daemon” ersetzen – schon sollte alles laufen.
Bei mir läuft’ es so jedenfalls – Docker ist fleißig am Layer checksummen berechnen.