Container - Docker Container Logo

Container – Kleine Welten, große Möglichkeiten

Veröffentlicht

Anlässlich der ContainerConf 2018 möchte ich dir heute ein bisschen etwas über Container im allgemeinen berichten und wie ich sie aktuell im Einsatz habe. Vom 13.-16.11.2018 hat zum dritten Mal die „ContainerConf“ in Mannheim im Congress Center Rosengarten stattgefunden und war mit 700 Teilnehmern komplett ausverkauft. In Anbetracht, dass die wohl bekannteste Container-Software „Docker“ im März erst fünf Jahre alt geworden ist, sind das bereits sehr beachtliche Ausmaße. Dennoch scheinen noch nicht alle davon mitbekommen zu haben.

Container und Virtualisierung

Grundsätzlich ist die Containervirtualisierung der klassischen Virtualisierung nicht ganz unähnlich. Durch den Verzicht auf einen Hypervisor können mehrere parallel betriebene Container jedoch deutlich ressourcenschonender sein, als klassische VMs. Im einfachsten Fall besteht ein Container lediglich aus einem minimalistischen Betriebssystem (z.B. Alpine Linux) und einer kleinen Applikation oder Funktion.

Einer der größten Vorteile von Containern ist die besser Trennung der Zuständigkeiten von Entwicklung und Betrieb. Die Entwickler stellen einen lauffähigen Container zur Verfügung und das Betriebsteam stellt den ordentlichen Betrieb sicher.

Aller Voraussicht nach werden in Zukunft monolithische Applikationen durch Microservices abgelöst werden. Software zur Containervirtualisierung, wie Docker, liefern hier bisher unschlagbare Werkzeuge, um Microservices möglichst einfach in die Realität umzusetzen. Auch ich habe bereits ein paar Anwendungsfälle in meinen privaten Projekten gefunden.

Docker auf Raspberry Pi

Anfänglich war ich skeptisch, ob ein Raspberry Pi mit Raspbian Stretch Lite dieser Aufgabe gewachsen ist. Natürlich kann der kleine Allrounder nicht mit einem Server oder gar einer voll ausgewachsenen Cloud mithalten. Jedoch sollte man ihn auch nicht unterschätzen. Aktuell lasse ich parallel zwei Container laufen und es ist noch etwas Luft nach oben.

Doch erst einmal von Beginn an. Am Anfang steht die Installation von Docker. Dank „apt-get“ Paketmanager unter Linux gestaltet sich dieser Schritt als sehr einfach. Zuerst sollten die Repositories und die vorhandene Software auf den neuesten Stand gebracht werden.

sudo apt-get update

sudo apt-get upgrade

Anschließend fährt man erst einmal damit fort die Abhängigkeiten für Docker zu installieren.

sudo apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common

Falls man offizielle Docker Container von GitHUB verwenden möchte, muss man noch die entsprechenden Signing Keys und offizielle Docker Repositories hinzufügen.

echo "deb [arch=armhf] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list

Nun kann man endlich Docker CE installieren und zum Systemstart hinzufügen.

sudo apt install docker-ce

sudo systemctl enable docker

sudo systemctl start docker

Theoretisch kann man nun direkt loslegen die ersten Container herunterzuladen und zu starten. Nicht alle Images werden standardmäßig vorkompiliert für ARM angeboten. Für meine bisherigen Zwecke hat die Standard-Konfiguration bisher jedoch genügt. Andernfalls sollte man sich zusätzlich „Docker Compose“ anschauen.

Container in Betrieb nehmen

Nachdem Docker nun bereit ist, wird es Zeit die ersten Container in Betrieb zu nehmen. Das funktioniert ganz einfach mit dem Kommando „docker run“. Für mein Smart Home laufen auf meinem Raspberry Pi aktuell zwei Container. Einer mit „Home Gear“ mit dem ich meine Homematic Geräte steuere und einer mit „Home Assistant„, der für die Visualisierung und Automatisierung sorgt.

Folgende Kommandos verwende ich für den jeweils ersten Start des jeweiligen Containers.

Homegear:
docker run -d --rm -v /home/pi/homegear/etc:/etc/homegear:Z -v /home/pi/homegear/lib:/var/lib/homegear:Z -v /home/pi/homegear/log:/var/log/homegear:Z -e TZ=Europe/Berlin -e HOST_USER_ID=$(id -u) -e HOST_USER_GID=$(id -g) -p 2001:2001 -p 2002:2002 -p 2003:2003 --device=/dev/ttyUSB0 --name homegear homegear/rpi-homegear:stable
Home Assistant:
docker run -d --rm --name="home-assistant_82" -v /home/pi/homeassistant/config:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/raspberrypi3-homeassistant:0.82.1

Ist bei einem „docker run“ Aufruf das benötigt Image lokal noch nicht verfügbar, so wird es von einem konfigurierten Repository heruntergeladen. Nachdem ein Container erstellt wurde, kann er beispielsweise mit „docker restart“ neugestartet oder „docker stop“ gestoppt werden. Eine sehr detaillierte Beschreibung der Kommandos kann man sich mit „docker −−help“ anzeigen lassen.

Wenn du Fragen zu den einzelnen Komponenten der Kommandos oben hast, kannst du mir gerne einen Kommentar da lassen.

Ich hoffe dieser Beitrag ist dir eine kleine Hilfe.

Bis zum nächsten Mal.

Dein Dominic

Hinterlasse eine Nachricht

Kommentar verfassen

  Subscribe  
Benachrichtigen, wenn