Archiv der Kategorie: Docker

Docker Container

Hallo Ihr Technik (und in diesem Fall Container) begeisterten!

Heute möchte ich euch einmal die von mir gebauten Docker Container vorstellen.

Wie ihr ggf. schon wisst arbeite ich gerne mit Arm Platinen wie dem ODROID-U3/X2 und dem Raspberry Pi 1+2 (jeweils Model B).

Meine Container nach aktuellem Stand (10.09.2016):

RhodeCode 4.1.0: sstruss/rhodecode-armhf

  • Ports
    • 5000 – Webinterface (Web-Root = / also für subdomain eingerichtet wie: rhodecode.example.com – kann aber auch für z.B. /rhodecode konfiguriert werden)
    • 9900 – VCS Server
    • 5432 – PostgreSQL Server
  • Volumes
    • /repos für repositories
    • /opt/rhodecode-enterprise-ce/configs für Konfigurationsdateien

 

Gitlab CE 8.7.3: sstruss/gitlab-ce-armhf und sstruss/gitlab-ce-x64_86

  • Ports
    • 80 -Webinterface (Web-Root = / also für subdomain eingerichtet wie: gitlab.example.com – kann aber auch für z.B. /gitlab konfiguriert werden)
  • Volumes
    • /etc/default – Konfigurationen
    • /home/git/gitlab/config – noch mehr Konfigurationen
    • /home/git/repositories – Repositorien
    • /var/lib/postgresql – PostgreSQL

 

Registrator v7: sstruss/registrator-armhf

 

znc 1.6.3: sstruss/znc-armhf

  • Ports
    • 7887 – Webinterface (http?+https) + IRC Port gleichzeitig
  • Volumes
    • /home/znc/.znc – Konfigurationsdateien

 

Alpine Linux Base Image 3.3: sstruss/alpine-armhf

  • Minimal Basis Images für einige Container

 

Docker Swarm Manager/Client: sstruss/swarm-armhf (Ab Docker 1.12 wohl obsolete)

  • Ports
    • 2375 – Swarm Port
  • Volumes
    • /.swarm – Swarm Konfiguration(?)

 

Go 1.5.3: sstruss/golang-armhf

 

znc Build Maschine: sstruss/znc-armhf-builder

 

Nextcloud 10.0: sstruss/nextcloud-armhf und sstruss/nextcloud-fpm-only-armhf

sstruss/nextcloud-armhf ist hierbei das All-In-One Paket, während sich sstruss/nextcloud-fpm-only-armhf an Umgebungen richtet in denen Funktionsgetrennt containert werden soll (z.B. DB, Webserver, FPM).

  • Ports
  • Volumes
    • /etc/php/7.0 – PHP Konfiguration
    • /var/www/html/nextcloud – Nextcloud Installation (speziell /data + /config sind hier ggf. interessant als separates Volume)
    • /data (Nextcloud Benutzerdaten)
    • /var/www/html/nextcloud/config (Nextcloud Konfiguration)
    • /var/www/html/nextcloud/data (Nextcloud Daten)

 

Ich hoffe für den ein oder anderen ist hier etwas sinnvolles dabei, dann war meine Arbeit nicht ganz vergebens und nicht ausschließlich für mich. 😉

Docker auf armhf compilen

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.