Normale Ansicht

Es gibt neue verfügbare Artikel. Klicken Sie, um die Seite zu aktualisieren.
Ältere BeiträgeHaupt-Feeds

MQTT-Broker Mosquitto als Docker Container installieren

Von: Benni
26. Januar 2024 um 20:48

Ein MQTT-Broker ist die Schnittstelle zwischen vielen IoT-Sensoren und Geräten, die Sensordaten auswerten oder Aktoren steuern. Das MQTT-Protokoll ist offen und sehr weit verbreitet. Es findet in der Industrie Anwendungen, ist aber auch in Smart Homes ist MQTT weit verbreitet.
MQTT ist ein sehr schlankes und schnelles Protokoll. Es wird in Anwendungen mit niedriger Bandbreite gerne angewendet.

MQTT funktioniert, grob gesagt, folgendermaßen: IoT-Geräte können Nachrichten versenden, die von anderen IoT-Geräten empfangen werden. Die Vermittlungsstelle ist ein sogenannter MQTT-Broker. Dieser empfängt die Nachrichten von den Clients. Gleichzeitig können diese Nachrichten von anderen Clients abonniert werden. Die Nachrichten werden in sog. Topics eingestuft, die hierarchisch angeordnet sind, z.B. Wohnzimmer/Klima/Luftfeuchtigkeit.

Home Assistant, oder ein anderer Client, kann diesen Topic abonnieren und den Nachrichteninhalt („Payload„) auswerten (z.B. 65%).

Home Assistant OS vs. Home Assistant Container

In Home Assistant OS und Supervisor gibt es ein Addon, das einen MQTT-Broker installiert. Das ist sehr einfach, komfortabel und funktioniert wohl recht zurverlässig. In den Installationsarten Home Assistant Container und Core gibt es diese Möglichkeit nicht. Hier muss man manuell einen MQTT-Broker aufsetzen.

In diesem Artikel beschäftige ich mich damit, wie man den MQTT-Brocker Mosquitto über Docker installiert. Anschließend zeige ich, wie man die Konfigurationsdatei gestaltet und eine Verbindung zu Home Assistant herstellt. Das Ergebnis ist dann ungefähr so, als hätte man das Addon installiert. Los gehts!

Schritt für Schritt: MQTT-Broker Mosquitto mit Docker installieren

Als MQTT-Broker verwende ich die weit verbreitete Software Mosquitto von Eclipse. Dieser wird auch von Home Assistant bevorzugt und ist derjenige Broker, den das Addon installieren würde.
Für diese Anleitung wird vorausgesetzt, dass Docker bereits installiert ist und eine SSH-Verbindung zum Server hergestellt werden kann.

Schritt 1: Zunächst erstellen wir ein paar Ordner, die wir später benötigen. Mosquitto wird später so konfiguriert, dass in diese Ordner alle wichtigen Dateien abgelegt werden. Dadurch kann man auf dem Filesystem des Servers Mosquitto konfigurieren und beobachten.

$ mkdir mosquitto
$ mkdir mosquitto/config 
$ mkdir mosquitto/data 
$ mkdir mosquitto/log

Schritt 2: Nun wird die Konfigurationsdatei für Mosquitto erstellt. Über diese Datei kann man das Verhalten von Mosquitto steuern.

$ nano config/mosquitto.conf
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
log_dest stdout
password_file /mosquitto/config/mosquitto.passwd
allow_anonymous false
listener 1883

Schritt 3: Mit dem folgenden Befehl lädt man sich das aktuelle Image von Eclipse Mosquitto auf den Server.

$ docker pull eclipse-mosquitto

Schritt 4: Mit dem folgenden Befehl wird der Docker-Container gestartet. Das ist der Schlüsselmoment, jetzt muss alles klappen.

$ docker run -it -p 1883:1883 -p 9001:9001 --name mosquitto -v /home/pi/mosquitto/config:/mosquitto/config -v /home/pi/mosquitto/data:/mosquitto/data -v /home/pi/mosquitto/log:/mosquitto/log eclipse-mosquitt

Die Flags bedeuten hierbei folgendes:

  • -p 1883:1883 Der genannte Port ist die Standardeinstellung für MQTT. Alles was auf diesen Port am Server ankommt, wird in den Mosquitto-Container geleitet.
  • -p 9001:9001 Über diesen Port laufen die Websocket-Anwendungen. Falls das nicht benötigt wird, kann man das weg lassen
  • name mosquitto Über diesen kurzen Namen können wir den Docker-Container steuern
  • -v <filesystem-Pfad>:<Container-Pfad> Die in Schritt 1 erstellten Ordner werden in den Container eingebunden

Wer lieber Docker Compose verwendet, trägt diesen Eintrag in seine *.yaml ein:

services:
    eclipse-mosquitto:
        stdin_open: true
        tty: true
        ports:
            - 1883:1883
            - 9001:9001
        restart: unless-stopped
        container_name: mosquitto
        volumes:
            - /home/pi/mosquitto/config:/mosquitto/config
            - /home/pi/mosquitto/data:/mosquitto/data
            - /home/pi/mosquitto/log:/mosquitto/log
        image: eclipse-mosquitto

Schritt 5: Checken, ob der Container ordnungsgemäß läuft. In der folgenden Liste sollte eine Zeile mit dem Mosquitto-Docker auftauchen. Dieser sollte außerdem „up“ sein. Falls nicht, nochmal versuchen den Container zu starten und kontrollieren, ob er läuft.

$ docker container ls -a
CONTAINER ID   IMAGE          COMMAND   CREATED        STATUS        PORTS    NAMES
xxxxxxxxx   eclipse-mosquitto "/init"   3 minutes ago   Up 2 minutes  [...]   mosquitto

Schritt 6: Sehr gut, der Container läuft. Es wird dringend empfohlen, den MQTT-Broker so abzusichern, dass nur angemeldete User darauf zugreifen können. Das ist ja schon in Schritt 2 in die Konfigurationsdatei geschrieben worden. Mit dem folgenden Befehl melden wir uns in der Shell innerhalb des Containers an und erstellen einen Benutzer. In diesem Beispiel mosquitto. Im Anschluss an diesen Befehl wird man zweimal gebeten, das Passwort für den User festzulegen. Ist das geschafft, läuft der MQTT-Broker auf dem Server. Herzlichen Glückwunsch!

$ docker exec -it sh // öffnet die Shell innerhalb des Dockers
mosquitto_passwd -c /mosquitto/config/mosquitto.passwd mosquitto

Optional Schritt 7: Den MQTT-Broker bindet man in Home Assistant ein, indem man auf EinstellungenGeräte und Dienste+ Integration hinzufügen klickt. Im Suchfenster nach „MQTT“ suchen und die Zugangsdaten eingeben.
Die Server-Adresse findet man übrigens am schnellsten über ifconfig heraus.

The post MQTT-Broker Mosquitto als Docker Container installieren first appeared on bejonet - Linux | Smart Home | Technik.

MongoDB-Beispieldatenbanken für Docker einrichten

27. November 2023 um 07:51

Aktuell setze ich mich ein wenig mit MongoDB auseinander und habe mir lokal mit Docker eine Test-Installation eingerichtet:

docker run --name mongo -d mongodb/mongodb-community-server:latest

docker exec -it mongo mongosh

  Using MongoDB: 7.0.3
  Using Mongosh: 2.1.0

test> ...

Je nachdem, wie Sie Docker installiert haben, müssen Sie sudo vor jedes docker-Kommando stellen.

Zum Kennenlernen hätte ich nun gerne ein paar Beispieldatenbanken. Und tatsächlich stellt Mongo für sein Cloud-Angebot Atlas eine ganze Palette von Testdatenbanken zur Verfügung. Eine Kurzbeschreibung der Datenbanken finden Sie hier:

https://www.mongodb.com/docs/atlas/sample-data

Genau die Datenbanken hätte ich gerne in meiner lokalen Installation als »Spielwiese«. Leider ist die Installation dieser Beispieldatenbanken bei der lokalen Verwendung von MongoDB umständlich. Auf GitHub gibt es Dumps (Backups) der Beispieldateien im JSON-Format:

git clone https://github.com/mcampo2/mongodb-sample-databases.git
cd mongodb-sample-databases
lstree sample_*

  sample_airbnb/
    listingsAndReviews.json
  sample_analytics/
    accounts.json
    customers.json
    transactions.json
  sample_geospatial/
    shipwrecks.json
  ...

Jetzt geht es darum, die Datenbanken zu importieren. Unter Linux oder macOS führen Sie dazu für jede JSON-Datei aus samples_xxx ein Kommando nach dem folgenden Muster aus:

cat sample_airbnb/listingsAndReviews.json | \
  docker exec -i mongo mongoimport --db sample_airbnb --collection listingsAndReviews

Beachten Sie, dass Sie docker exec mit der Option -i ausführen müssen (nicht -it wie bisher für den interaktiven Betrieb), damit die Weitergabe von Daten über den Pipe-Operator | funktioniert.

Anstatt nun jede JSON-Datei einzeln zu importieren, bietet sich die Formulierung eines winzigen Scripts an. Er richtet für jedes DB-Verzeichnis sample_xxx eine gleichnamige Datenbank ein und importiert jedes JSON-Dokument als Collection. (Beachten Sie, dass die auf Atlas definierten Indize nicht eingerichtet werden. Wenn Sie zum Testen einen Index brauchen, müssen Sie diesen selbst einrichten.)

#!/bin/sh
for db in sample_*; do
  for file in $db/*.json; do
      collection="$(basename $file .json)"
      cat $file | docker exec -i mongo mongoimport --db $db --collection $collection
  done
done

Das Script muss in dem Verzeichnis ausgeführt werden, in dem sich die von GitHub heruntergeladenen sample_xxx-Verzeichnisse befinden.

Nach dem Import können Sie sich in der Mongo Shell überzeugen, dass alles geklappt hat:

docker exec -it mongo mongosh

test> show dbs

  admin                40.00 KiB
  config               72.00 KiB
  local                40.00 KiB
  sample_airbnb        52.09 MiB
  sample_analytics      9.39 MiB
  sample_geospatial   784.00 KiB
  sample_mflix         28.39 MiB
  sample_supplies     968.00 KiB
  sample_training      61.30 MiB
  sample_weatherdata    2.55 MiB
  samples_airbnb       52.09 MiB
  test                112.00 KiB

test> use sample_airbnb

sample_airbnb> show collections

  listingsAndReviews

sample_airbnb> db.listingsAndReviews.findOne()

 {
    _id: '10009999',
    listing_url: 'https://www.airbnb.com/rooms/10009999',
    name: 'Horto flat with small garden',
    ...
  }

Quellen/Links

KubeCon + CloudNativeCon Europe: CNCF veröffentlicht Kubernetes Audit

19. April 2023 um 19:40

Die Cloud Native Computing Foundation hat ein von der NCC Group jetzt abgeschlossenes Security Audit für Kubernetes als Open Source veröffentlicht.

Grundlage für das im Sommer 2022 gestartete Audit war Kubernetes 1.24. Ziel der Sicherheitsüberprüfung war es, alle Probleme in der Projektarchitektur und der Codebasis zu identifizieren, die die Sicherheit der Kubernetes-Benutzer beeinträchtigen könnten, teilte die CNCF bei der KubeCon + CloudNativeCon Europe in Amsterdam mit. Diese Sicherheitsprüfung sollte ein umfassendes Bild der Sicherheitslage von Kubernetes und seiner Quellcodebasis zeichnen und konzentrierte sich auf diverse Komponenten von Kubernetes.

Da Kubernetes auf Container-Runtimes wie Docker und CRI-O angewiesen sei, habe man Container-Escape-Vorgänge, die auf Fehlern in der Container-Laufzeit beruhen, nicht berücksichtigt, es sei denn, der Vorgang sei durch einen Fehler bei der Einrichtung des Containers durch Kubernetes entstanden, heißt es weiter zur Methodík.

Beim Audit seien unter anderem eine Reihe von Problemen mit der Administration von Benutzer- oder Netzwerkberechtigungen aufgefallen. Diese könnten für Verwirrung sorgen oder zu Unklarheiten über die für eine bestimmte Komponente verfügbaren Berechtigungen, heißt es.

Auch habe man Schwachstellen in der komponentenübergreifenden Authentifizierung entdeckt, die es unter Umständen einem böswilligen Benutzer ermöglichen, die Berechtigungen zum Cluster-Administrator zu erweitern.

Die auf Kubernetes 1.24 basierende Sicherheitsprüfung (PDF) ist im Kubernetes-GitHub-Repository verfügbar. Die CNCF hat im Jahr 2018 damit begonnen, Audits abzuhalten um das von ihr betreute Ökosystem sicher zu halten. Seit dieser Zeit hätten argo, Backstage, CoreDNS, CRI-O, Envoy, etcd, Flux, KubeEdge, Linkerd, Prometheus, SPIFFE/SPIRE und andere CNCF-Projekte Sicherheitsaudits durchlaufen.

Der Beitrag KubeCon + CloudNativeCon Europe: CNCF veröffentlicht Kubernetes Audit erschien zuerst auf Linux-Magazin.

Docker irritiert Open-Source-Projekte mit Lösch-Ankündigung

17. März 2023 um 09:12

Docker will kostenfreie Team-Accounts für den Hub nicht mehr anbieten. Für Open-Source-Projekte bringt das Verwirrung und Probleme. Das Unternehmen gesteht Kommunikationsfehler ein.

Container-Spezialist Docker hat mit einer E-Mail an verbliebene Nutzer kostenfreier Team-Accounts in seinem Hub für Irritation bei zahlreichen Open-Source-Projekten gesorgt. Demnach sollten die kostenfreien Accounts und deren Inhalte wie Images gelöscht werden, falls nicht auf ein zahlungspflichtiges Abo-Modell gewechselt werde. Schon kurz nach der Ankündigung versuchte Docker jedoch, zumindest die Open-Source-Community zu beschwichtigen.

Die versendete E-Mail und zunächst dazu verfügbare FAQ sorgten für zahlreiche Diskussionen, etwa auf Hackernews oder Twitter, aber auch im Issue-Tracker der Projekte selbst – vermutlich, weil sie viel zu vage formuliert waren und noch viele Fragen zum Ablauf offen ließen. Viele Projekte sahen sich nicht nur mit dem Problem konfrontiert, ein Abo abschließen zu müssen, sondern auch damit, dass Images und Daten gelöscht werden sollten, falls das nicht erfolgt. Das wiederum könnte CI-Systeme oder Ähnliches von Dritten beeinträchtigen.

In den inzwischen überarbeiten FAQ findet sich nun ein neuer Absatz speziell für Open-Source-Projekte. Darin heißt es, dass das Ende der kostenfreien Team-Accounts nicht für jene Projekte gelte, die Teil von Dockers Open-Source-Sponsoring-Programm seien. Das Unternehmen forderte betroffene Projekte auf, sich um Aufnahme in das Programm zu bemühen. Man habe außerdem die Zahl der Angestellten erhöht, die die Bewerbungen überprüfen.

Auf Github beschweren sich jedoch zahlreiche Open-Source-Entwickler, dass sie nach einer Bewerbung für das Sponsoring-Programm in der Vergangenheit nie eine Rückmeldung von Docker erhielten, wie etwa bei Rocky Linux. Ebenso heißt es, dass die Fragen oder Bestimmungen zur Aufnahme auf einige Projekte schlicht nicht zuträfen und eine Bewerbung so überhaupt nicht möglich sei.

Das Docker-Unternehmen bittet inzwischen offiziell auf seinem Blog um Entschuldigung: “Wir entschuldigen uns für die Art und Weise, wie wir die Beendigung des kostenfreien Docker-Team-Abonnements kommuniziert und durchgeführt haben, was die Open-Source-Gemeinschaft alarmiert hat.” Das Unternehmen hat außerdem ausführliche FAQ zum weiteren Vorgehen veröffentlicht und bittet weiter um Feedback von Open-Source-Projekten.

Der Beitrag Docker irritiert Open-Source-Projekte mit Lösch-Ankündigung erschien zuerst auf Linux-Magazin.

Mirantis Container Runtime 23.0 veröffentlicht

15. März 2023 um 09:42

Mirantis hat kürzlich in Zusammenarbeit mit dem Moby-Projekt die Mirantis Container Runtime (MCR) 23.0 vorgestellt. Neue Funktionen, Verbesserungen, Fehlerbehebungen und Sicherheitsupdates seien im ersten neuen Release nach zwei Jahren Entwicklungsarbeit enthalten, teilt Mirantis mit.

Moby ist unter anderem das Upstream-Open-Source-Projekt von Mirantis Container Runtime sowie von Docker und Docker Engine. Mit MCR 23.0 gleiche man die Upstream-Versionsnummern des Moby-Projekts an, teilt Mirantis weiter mit. Benutzer können dadurch zwischen der Open-Source-Community-Software Moby und der für den Unternehmenseinsatz konzipierten und entsprechend supporteten Mirantis Container Runtime wechseln, heißt es weiter.

Mirantis Container Runtime (MCR) biete eine schlanke und hochverfügbare Plattform für die Ausführung von containerisierten Anwendungen, die mit dem Moby-Projekt konsistent und mit den meisten Docker-kompatiblen Entwicklungs- und Workflow-Tools, Plattformen und Diensten kompatibel sei.

ZU den Neuerungen in Moby/MCR 23.0 zählt der bislang nur experimentelle Support für Container-Storage-Interface-Treiber (CSI) in Swarm, was die Verwaltung von Speicherressourcen über Container-Orchestrierungsplattformen hinweg erleichtern soll. Die CSI-Treiber seien identisch mit denen, die auch Kubernetes verwende. Entwickler könnten dadurch dieselben Speicher-Plugins nutzen.

MCR 23.0 biete Unterstützung für Oracle Linux 8, RHEL 9 und Windows Server 2022.

Der Beitrag Mirantis Container Runtime 23.0 veröffentlicht erschien zuerst auf Linux-Magazin.

Moby 23.0.0 tauscht den Builder aus

06. Februar 2023 um 09:41

Mit Version 23.0.0 steigt das Open-Source-Projekt Moby auf BuildKit und Buildx zum Bau von Linux-Images um. Der Classic Builder ist damit auf dem Abstellgleis gelandet.

Der Legacy-Builder kann zwar weiterhin verwendet werden, indem explizit DOCKER_BUILDKIT=0 gesetzt wird, soll aber in den kommenden Versionen endgültig entfallen.

Moby ist ein Open-Source-Projekt, das von Docker entwickelt wurde, um die Software-Containerisierung zu unterstützen. Es bietet eine Art “Lego-Bausatz” von Toolkit-Komponenten an und damit den Rahmen für deren Zusammenbau zu benutzerdefinierten Container-basierten Systemen. Zu den Komponenten gehören laut der Projektbeschreibung Container-Build-Tools, eine Container-Registry, Orchestrierungs-Tools, eine Laufzeitumgebung und vieles mehr.

Zu den weiteren Neuerungen zählt auch die Unterstützung für alternative OCI-Runtimes unter Linux, die kompatibel mit der containerd-Laufzeit-API v2 seien, heißt es in der Ankündigung auf Github, die alle weiteren Änderungen aufführt.

Der Beitrag Moby 23.0.0 tauscht den Builder aus erschien zuerst auf Linux-Magazin.

Docker begrenzt Angebot zugunsten des teureren Business-Abos

25. Oktober 2022 um 09:12

Eine versteckt angekündigte Preiserhöhung schränkt günstige Team-Angebote für Docker-Kunden ein.

Nur rund ein Jahr nach einer Neugestaltung seiner Preis- und Lizenzpolitik erhöht der Container-Spezialist Docker seine Preise – allerdings ohne große Ankündigung, sondern lediglich über eine FAQ auf seiner Webseite sowie eine E-Mail an Kunden.

Die erst im vergangenen Jahr eingeführte Lizenz- und Preisvereinbarung für größere Unternehmen, die als Docker-Business-Abo bezeichnet wird, wird dabei nicht nur teurer. Offenbar sollen auch deutlich mehr Unternehmenskunden als bisher in dieses Abomodell gezwungen werden.

Ende August 2021 stellte Docker erstmals das Business-Abo vor, das vorsah, dass Unternehmen, die mehr als 250 Mitarbeiter oder einen Jahresumsatz von mehr als zehn Millionen US-Dollar haben, es zwingend erwerben müssen. Zuvor war die Nutzung von Docker Desktop für alle Entwickler kostenfrei möglich.

Nach den nun vorgestellten Änderungen müssen künftig auch Unternehmen mit mehr als 100 Mitarbeitern ein Business-Abo erwerben. Dieses steigt im Preis von 21 auf 24 US-Dollar (pro Monat und Einzellizenz) – ein Anstieg um rund 14 Prozent. Der Betrag muss jährlich entrichtet werden.

Kunden mit mehr als 100 Angestellten, die bisher auf der günstigere Teams-Abo setzten und wegen der neuen Voraussetzungen in das Business-Abo rutschen, bietet Docker jedoch einen Rabatt über 30 Prozent auf die Gesamtsumme beim Wechsel in das neue Abo bis 31. Dezember 2022 an.

Der Preis für das Teams-Abo wird ebenfalls erhöht: von 7 auf 9 US-Dollar (pro Monat und Einzellizenz) – ein Anstieg um rund 28 Prozent. Die Personal- und Pro-Abos sollen zunächst im Preis unverändert bleiben.

Docker hat eigenen Angaben zufolge bereits bei mehr als 2.000 Kunden im Business-Abo. Diese erhalten zusätzlich zu dem Docker Desktop Zusatzfunktionen wie SSO, SCIM, Zugriffsverwaltung für Images und Registry und mehr. Ob der Anbieter die Kundenzahl durch die neue Preisgestaltung deutlich erhöhen kann, bleibt jedoch abzuwarten. Immerhin gibt es mit Podman und Rancher frei verfügbare Alternativen.

Der Beitrag Docker begrenzt Angebot zugunsten des teureren Business-Abos erschien zuerst auf Linux-Magazin.

Mirantis zeigt Lens-Erweiterung für Docker Desktop

10. Juni 2022 um 10:18

Nachdem Docker eine Programmierschnittstelle (API) namens Docker Extensions für Docker Desktop veröffentlicht hat, bringt Mirantis dafür eine Lens-Erweiterung für den Docker Desktop.

Lens bietet Kubernetes-Nutzern das verwalten und debuggen ihrer Workloads über mehrere Cluster hinweg in Echtzeit an. Die Open-Source-Lösung unterstützt zertifizierte Kubernetes-Distribution auf jeder Infrastruktur und arbeitet als Lens-Desktop-Anwendung mit Linux, MacOS und Windows.

Mit der Erweiterung für den Docker Desktop, der mit MacOS und Windows arbeitet, bringt Mirantis die Option, einen K0s-Kubernetes-Cluster auf dem lokalen Desktop zu starten und Lens für den einfacheren Einsatz von Kubernetes zu verwenden.

“Dies führt zwei äußerst beliebte Technologien zusammen und integriert die Funktionen von Lens für die Anwender von Docker Desktop, die zunehmend in Kubernetes arbeiten”, erklärt Miska Kaipiainen, Vice President of Engineering bei Mirantis. Ein Blogbeitrag erläutert die Erweiterung detaillierter.

Beim OpenInfra Summit in Berlin sagte Shaun O’Meara Field CTO bei Mirantis, dass man nicht allein die Infrastruktur bereitstellen wolle, sondern Entwicklern auch Services anbieten wolle, die ihnen die Arbeit erleichtern.  Die doch komplexe Kubernetes-Plattform werde damit für Entwickler leichter zugänglich. Man wolle in naher Zeit noch weitere Angebote für Entwickler veröffentlichen, sagte Shaun O’Meara im Gespräch mit dem Linux-Magazin.

Wie berichtet hatte Mirantis im Jahr 2019 Docker Enterprises übernommen. Docker konzentrierte sich daraufhin auf Docker Hub und Docker Desktop.

Der Beitrag Mirantis zeigt Lens-Erweiterung für Docker Desktop erschien zuerst auf Linux-Magazin.

Docker Desktop für Linux

09. Juni 2022 um 13:17

Docker Desktop ist eine grafische Benutzeroberfläche zu Docker, die manche administrative Aufgaben erleichtert. Ursprünglich stand das Programm nur für Windows und macOS zur Verfügung. Seit Mai 2022 gibt es den Docker Desktop auch für Linux. Für diesen Blog-Artikel habe ich das Programm unter Ubuntu 22.04 kurz ausprobiert. Soviel vorweg: Aufgrund diverser Nachteile gibt es wenig zwingende Gründe, die für den Einsatz sprechen.

Docker Desktop unter Linux

Installation

Ich habe meine Tests unter Ubuntu 22.04 durchgeführt. Auf dem Rechner waren bisher keine Docker-Pakete installiert. Beachten Sie, dass der Docker Desktop keine Erweiterung zu einer vorhandenen Docker-Installation ist. Vielmehr sollten Sie diese vollständig entfernen, bevor Sie mit der Installation beginnen!

Bevor Sie den Docker Desktop installieren können, müssen Sie die Docker-eigene Paketquelle einrichten (Quelle):

sudo apt update

sudo apt install ca-certificates curl gnupg lsb-release

sudo mkdir -p /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Absurderweise enthält diese Paketquelle zwar diverse Docker-Pakete, nicht aber den Docker Desktop. Den müssen Sie manuell als DEB-Paket von der folgenden Seite herunterladen. (Der Grund für diese umständliche Vorgehensweise sind vermutlich die abweichenden Lizenzen. Der Docker Desktop steht zwar Privatanwendern kostenlos zur Verfügung. Es handelt sich aber nicht um Open-Source-Code. Für den kommerziellen Einsatz sind je nach Unternehmensgröße Lizenzgebühren erforderlich.)

https://docs.docker.com/desktop/release-notes

Das lokal heruntergeladene Paket samt aller Abhängigkeiten installieren Sie nun so:

sudo apt update

sudo apt install Downloads/docker-desktop-4.9.0-amd64.deb

Zum Ende der Installation wird eine Warnung angezeigt, die Sie aber ignorieren können:

N: Der Download wird als root und nicht Sandbox-geschützt durchgeführt, 
da auf die Datei »/home/kofler/Downloads/docker-desktop-4.9.0-amd64.deb« 
durch den Benutzer »_apt« nicht zugegriffen werden kann. 
pkgAcquire::Run (13: Keine Berechtigung)

Betrieb

Im Startmenü bzw. unter Gnome mittels Aktivitäten führen Sie den Docker Desktop nun aus. Der Startvorgang dauert eine Weile. Anschließend können die Kommandos docker und docker compose wie üblich in einem Terminalfenster ausgeführt werden. Docker wurde so eingerichtet, dass das Kommando ohne sudo funktioniert. Den Containern wird standardmäßig eine Netzwerkverbindung in einem privaten Netzwerk in 172.*.*.* zugewiesen.

docker run -it --rm alpine

<alpine># ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN qlen 1000
    link/ipip 0.0.0.0 brd 0.0.0.0
3: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN qlen 1000
    link/tunnel6 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
16: eth0@if17: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever

Nachdem die Hürden der Installation einmal überwunden waren, hat Docker ausgezeichnet funktioniert. Im Vergleich zur reinen Verwendung des Kommandos docker hilft der Docker Desktop beim Einstieg in die Container-Welt sowie bei der Verwaltung aller jemals ausgeführten Container, aller heruntergeladenen Images sowie der von den Container genutzten Volumes. Wirklich essentiell ist keine dieser Funktionen, aber natürlich erleichtern sie die ersten Schritte.

Interna

Hinter den Kulissen ist für die Ausführung der Docker-Container eine virtuelle Maschine zuständig, die vom Docker Desktop automatisch gestartet wird. Auf meinem Rechner mit 16 GByte RAM und einer CPU mit 4 Cores hat der Docker Desktop für sich knapp 4 GByte RAM und 2 Cores reserviert. Für das Disk Image der Maschine sind 64 GByte vorgesehen. (Anfänglich ist die Datei aber zum Glück wesentlich kleiner.) QEMU-Experten können sich in der Prozessliste die Optionen ansehen, die für die Ausführung der virtuellen Maschine verwendet werden.

ps axu | grep qemu

kofler     40338  3.5 26.0 6470936 4223024 ?     Sl   13:13   0:54 qemu-system-x86_64 -accel kvm -cpu host -machine q35 -m 3962 -smp 2 -kernel /opt/docker-desktop/linuxkit/kernel -append page_poison=1 vsyscall=emulate panic=1 nospec_store_bypass_disable noibrs noibpb no_stf_barrier mitigations=off linuxkit.unified_cgroup_hierarchy=1 vpnkit.connect=tcp+bootstrap+client://gateway.docker.internal:42021/974498b84e0cf777fec14624fda4ca7bb07343ae3bbed05f397d28bbf707b784 vpnkit.disable=osxfs-data console=ttyS0 -initrd /opt/docker-desktop/linuxkit/initrd.img -serial pipe:/tmp/qemu-console1100778794/fifo -drive if=none,file=/home/kofler/.docker/desktop/vms/0/data/Docker.raw,format=raw,id=hd0 -device virtio-blk-pci,drive=hd0,serial=dummyserial -netdev user,id=net0,ipv6=off,net=192.168.65.0/24,dhcpstart=192.168.65.9 -device virtio-net-pci,netdev=net0 -vga none -nographic -monitor none -object memory-backend-memfd,id=mem,size=3962M,share=on -numa node,memdev=mem -chardev socket,id=char0,path=/home/kofler/.docker/desktop/virtiofs.sock0 -device vhost-user-fs-pci,queue-size=1024,chardev=char0,tag=virtiofs0

Der Docker Desktop samt seiner virtuellen Maschine läuft ohne root-Rechte als Prozess des lokalen Benutzers.

systemctl --user status docker-desktop

  docker-desktop.service - Docker Desktop
     Loaded: loaded (/usr/lib/systemd/user/docker-desktop.service; disabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-06-09 13:13:50 CEST; 9min ago
   Main PID: 40088 (com.docker.back)
      Tasks: 157 (limit: 18937)
     Memory: 5.8G


docker version

Client: Docker Engine - Community
 Cloud integration: v1.0.25
 Version:           20.10.17
 API version:       1.41
 ...
 Context:           desktop-linux
 Experimental:      true

Server: Docker Desktop 4.9.0 (80466)
 Engine:
  Version:          20.10.16
  API version:      1.41 (minimum version 1.12)
  ...
 containerd:
  Version:          1.6.4
  GitCommit:        212e8b6fa2f44b9c21b2798135fc6fb7c53efc16
 runc:
  Version:          1.1.1
  GitCommit:        v1.1.1-0-g52de29d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Die Eckdaten der virtuellen Maschine können in der Oberfläche des Docker Desktops verändert werden.

Einstellungen für die virtuelle Maschine, in der die Docker-Container ausgeführt werden

Zukunftsvisionen: »Development Environments« versus »Development Containers«

Spannend ist eine neue Funktion, die aktuell aber erst im Preview-Stadium vorliegt: Development Environments (Link zur Dokumentation) sollen es im Zusammenspiel mit git noch einfacher machen, Testversionen bzw. Entwicklungszweige (git-Branches) im Team auszuprobieren — und das, ohne jedesmal alle möglichen Voraussetzungen manuell einzurichten. Möglicherweise führt das die Idee von gewöhnlichen Containern noch einen Schritt weiter.

Das VSCode-Plugin Remote Containers verfolgt mit Development Containern eine ganz ähnliche Idee (Link). Ob sich eines dieser Konzepte durchsetzen kann, ist aktuell noch nicht absehbar.

Fazit

Die grafische Oberfläche des Docker Desktops bietet Linux-Anwendern den gleichen Komfort wie Entwicklern, die Docker unter macOS oder Windows ausführen. Das ist an sich sehr erfreulich.

Der Docker Desktop enthält allerdings keine wirklich relevanten Funktionen, die nicht schon bisher auf Kommandoebene zur Verfügung standen. Gegen den Einsatz von Docker Desktop sprechen diverse Gründe:

  • Die Installation ist verblüffend umständlich. (Die Docker-Installation war schon immer relativ umständlich, weil nur wenige Distributionen aktuelle Docker-Pakete zur Verfügung stellen. Aber dass Docker Desktop die Sache noch komplizierter macht, ist absurd.)

  • Docker Desktop ist ein Komplettpaket inklusive aller Docker-Tools. Es ersetzt die bisherigen Pakete. Eine Installation des Docker Desktop parallel zu einem schon vorhandenen Docker-Setup ist nicht möglich.

  • Der Docker Desktop verwendet eine virtuelle Maschine zur Ausführung von Containern. Dadurch ergibt sich eine bessere Trennung zwischen dem Host-Rechner und den Docker-Container. Allerdings geht ein wesentlicher Vorteil von Docker unter Linux verloren, nämlich die nahtlose Integration von Docker-Containern in die Prozess- und Speicherverwaltung des Hosts. Der für die virtuelle Maschine reservierte Speicher wird zur Gänze Docker zugeteilt, ganz egal, wie viele oder wenige Container gerade ausgeführt werden. Auf Entwicklungsrechnern mag dieser Ansatz eine gewisse Berechtigung haben. Für das Deployment am Server ist der Docker Desktop definitiv ungeeignet (und auch gar nicht vorgesehen).

  • Weil der Docker Desktop eine virtuelle Maschine benötigt, kann der Docker Desktop nur bei nativen Linux-Installationen genutzt werden — nicht aber, wenn Linux selbst in einer virtuellen Maschine läuft. Vermutlich ist das ein Grund, warum bisher so wenig Testberichte zum Docker Desktop erschienen sind …

  • Der Docker Desktop steht Privatanwendern zwar kostenlos zur Verfügung, es handelt sich aber nicht um ein ein Open-Source-Programm. Der kommerziellen Einsatz ist in großen Unternehmen (>250 Mitarbeiter oder >10 Millionen $ Jahresumsatz) kostenpflichtig.

Quellen/Links

Docker Desktop für Linux erschienen

11. Mai 2022 um 10:42

Nach Windows und MacOS gibt es den Docker Desktop nun auch für Linux-Systeme. Der Docker Desktop soll eine einfach zu installierende Anwendung darstellen, mit der sich containerisierte Anwendungen und Microservices erstellen und gemeinsam nutzen lassen.

Wie Dockers Produktmanager Chris McLellan weiter mitteilt, wird der Docker Desktop zusammen mit Container-Tools wie Kubernetes, Docker Compose, BuildKit und Schwachstellen-Scanning geliefert. Für die Entwicklung des Docker Desktops für Linux habe man sich entschieden, um Benutzern der verschiedenen Betriebssysteme eine einheitliche Oberfläche zu liefern. Auch der unmittelbare Zugang zu neuen Funktionen, etwa den Docker Extensions, die bisher nur auf dem Desktop für Windows und Mac verfügbar waren, seien ein Grund gewesen, so McLellan.

Docker Desktop für Linux auf Ubuntu. Quelle: Docker

Entwickler, die mit der Docker Engine unter Linux zufrieden seien, könnten die natürlich auch weiterhin nutzen, schreibt der Produktmanager. Der Desktop für Linux stelle lediglich sicher, dass Linux-Entwickler alle neuen Funktionen nutzen können, die in Docker Desktop integriert sind, ohne Kompromisse bei ihren bestehenden CLI-basierten Arbeitsabläufen eingehen zu müssen.

Um mit dem Desktop für Linux zu starten sei ein Blick in die Docker-Docs angeraten, um Informationen für die gewählte Distribution zu finden. Zum Start seien deb- und rpm-Pakete verfügbar. Ubuntu, Debian und Fedora erhalten dabei spezifische Unterstützung. Für ArchLinux stehe ein experimentelles Paket zur Verfügung. In den kommenden Wochen soll zudem noch Unterstützung für 64-Bit-Varianten von Raspberry Pi OS hinzugefügt werden.

Der Beitrag Docker Desktop für Linux erschienen erschien zuerst auf Linux-Magazin.

Ubuntu 22.04 LTS alias Jammy Jellyfish ist da

22. April 2022 um 07:14

Canonical hat mit Ubuntu 22.04 Jammy Jellyfish sein nächstes Long-Term-Support-Release mit Support bis 2027 veröffentlicht. Die Distribution bringt viel Neues mit, dazu trägt optisch schon Gnome 42 bei.

Die Basis bildet zudem der Linux-Kernel 5.15 LTS. Die neue Version bringt Rust für speichersichere Programmierung auf Systemebene mit. Die Umstellung auf OpenSSL v3 soll mit neuen kryptographischen Algorithmen für erhöhte Sicherheit sorgen. Als erste Ubuntu-Ausgabe soll die 22.04 LTS auch auf dem Raspberry Pi 4 mit 2 GByte problemlos laufen.

In Ubuntu seien die Nvidia Virtual GPU (vGPU) Softwaretreiber verfügbar. Data Scientists sollen so die Nvidia vGPU Software 14.0 nativ installieren können und von leistungsfähigen GPU-Ressourcen auf mehreren virtuellen Maschinen gleichzeitig profitieren, lässt Canonical wissen. Dies ermögliche die Parallelisierung und Isolierung anspruchsvoller KI/ML-Workloads.

Ubuntu 22.04 LTS lässt sich mit zehn verschiedene Akzentfarben anpassen, die sowohl auf die dunkle als auch auf die helle Variante des Yaru-Theme angewendet werden können. Das Dock lässt sich nun in der Größe anpassen und ist im Floating-Modus auch frei platzierbar. Der einstellbare Hide-Modus versteckt die Leiste dann ganz. Ubuntu 22.04 bietet nun die Möglichkeit, Animationen in den Einstellungen abzuschalten. Im Software-Center sind die Icons nun größer. Snaps bekommen nach wie vor den Vorzug gegenüber DEB-Paketen.

Gnome 42 bringt auch ein neues Screenshot-Tool mit, das sich auch zur Aufnahme von Screencasts eignet. Wayland ist der Standard als Display-Server. Allerdings gilt das nur, wenn keine Nvidia-Grafikkarten zum Einsatz kommen, mit denen es zu Problemen kommen kann. Wer mit zwei Bildschirmen arbeitet, kann sie nun verbinden, spiegeln oder nur einen der beiden verwenden.

Im Ubuntu Server klettert der Containerd auf die Version 1.5.9, Qemu kommt in Version 6.2.0. Der Container-Dienst LXD macht einen großen Sprung auf die Version 5.0, die einige Neuerungen umfasst. So unterstützen virtuelle Maschinen vTPM und PCI-Passthrough, virtuelle Netzwerke erstmals OVN. Obendrauf gibt es PHP 8.1.2 und OpenStack Yoga.

Nftables dient standardmäßig als Backend für die Firewall. Die Ubuntu-Entwickler weisen darauf hin, dass unter Umständen Docker nicht mit diesem Backend zusammenarbeitet. Auf ARM64-Systemen lassen sich über das Tool „ubuntu-drivers“ die proprietären NVIDIA-Treiber installieren. Der Kernel ist zudem so konfiguriert, dass sich NFS-Freigaben nicht mehr via UDP mounten lassen.

Der Beitrag Ubuntu 22.04 LTS alias Jammy Jellyfish ist da erschien zuerst auf Linux-Magazin.

Security Tools: Trivy – Docker Container auf Sicherheitslücken durchsuchen

09. Januar 2022 um 20:17

Container sind nach wie vor in alle Munde. Wer, der Einfachheit halber, mit Docker hantiert, der sollte regelmäßig die Aktualität der verwendeten Images prüfen. Nicht erst seit Log4j verbergen sich unerwünschte Sicherheitslücken in veralteten Images.

trivy

Trivy

Das Open-Source-Tool Trivy bietet die Möglichkeit lokale Images, direkt im Filesystem oder entfernte Repositorys nach Lücken zu scannen. Das Programm scannt unter anderen Base Images wie Alpine, Debian, Ubuntu, CentOS, SUSE, Photon OS, Paketmanager und andere Abhängigkeiten mithilfe der eigenen Schwachstellendatenbank ab.

Die Trivy Datenbank basiert auf NVD und diverser Security Meldungen einzelner Programmiersprachen (siehe).

Installation Trivy Security Scanner Debian/Ubuntu

sudo apt-get install wget apt-transport-https gnupg lsb-release
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/trivy.list
sudo apt-get update
sudo apt-get install trivy

Einen Scan mit Trivy anstoßen

Um die Übersicht der Scanergebnisse zu behalten, empfiehlt es sich, die Ausgabe auf kritische Lücken zu beschränken

trivy image --severity HIGH,CRITICAL IMAGENAME

trivy-scan

Das Tool erlaubt es ebenfalls einen HTML Report zu veröffentlichen

trivy image --format template --template "@contrib/html.tpl" -o report.html golang:1.12-alpine

trivy-ergebnisse

Trivy kann auch das Filesystem untersuchen.

trivy fs /path/to/project

Schlussendlich kann auch direkt via GitHub gescannt werden.

trivy repo https://github.com/knqyf263/trivy-ci-test

Fazit

Wer Docker im Einsatz hat, sollte die verwendeten Images regelmäßig auf Sicherheitslücken und Abhängigkeiten prüfen. Der Profi baut seine Images sicher selbst und weiß, was er tut, allerdings übersieht ein DevOp auch dort mal Abhängigkeiten. Auch hier schafft Trivy praktische Abhilfe, denn es lässt ich schnell in CI Workflows, beispielsweise von Gitlab integrieren.

Download

Lazy Docker - schnell und einfach Docker Container via Konsole verwalten

10. April 2020 um 09:31

Um Docker Container zu verwalten, gibt es viele Tools, da wäre zum Beispiel Portainer oder Rancher.

Lazy Docker

Aber es gibt auch schlichte Tools wie Lazy Docker.

lazydocker

Das in Go geschriebene Programm läuft über die Konsole, ist interaktiv und bietet schnellen Zugriff auf die wichtigsten Docker oder Docker Compose Funktionen. Folgende Funktionen werden aktuell (Version 0.8) unterstützt.

  • Zustand der Docker oder Docker Compose Umgebung abfragen
  • Anzeige von Protokollen für einen Container oder Dienst
  • ASCII-Grafiken der CPU- und Speichernutzung von Containern anzeigen
  • Neustart, anhalten, entfernen, oder neu aufbauen von Containern oder Diensten
  • Anzeigen der einzelnen Schichten eines bestimmten Images
  • Aufräumen von Containern, Images oder Volumes mit prune

lazydocker-cpu

Lazy Docker installieren

Die Installation ist sehr einfach und kann direkt über wget oder via brew erledigt werden.

Der Einfachheit halber werde ich den ersten Weg wählen.

Voraussetzung ist eine bestehende und laufende Docker Installation (ansonsten wäre die Nutzung des Programms wenig sinnvoll).

wget https://github.com/jesseduffield/lazydocker/releases/download/v0.18.1/lazydocker_0.18.1_Linux_x86_64.tar.gz
tar xvzf lazydocker*.tar.gz

sudo install lazydocker /usr/local/bin/
sudo systemctl status docker
sudo lazydocker

Die Steuerung erfolgt über die Pfeiltasten, das Menü lässt sich über x aufrufen und das Tool via Esc beenden.

Eine komplette Liste der Shortcuts findet ihr hier. Im Prinzip selbsterklärend.

Wer sich nicht selbst reinfinden möchte, der kann auch auf das Videotutorial zurückgreifen.

Fazit

Praktisches Tool, welches ohne Webserver oder dergleichen auskommt und etwas mehr Überblick bietet, als die üblichen Konsolenbefehle.

Download Lazy Docker

Jitsi Meet Docker: WelcomePage anpassen

Von: dominion
11. Juni 2021 um 15:24

Im Tutorial Jitsi Meet Docker Instanz anpassen habe ich bereits gezeigt, wie man die Einstellungen der eigenen Docker Jitsi Meet Instanz anpassen kann. Nun zeige ich euch noch, wie die WelcomePage das Aussehen von...

by adminForge.

In eigener Sache: JitsiCloud

Von: dominion
10. Januar 2021 um 10:24

DSGVO-konforme Videokonferenz- und Speicherlösung Ich biete für Schulen, Gemeinden, Vereine, Unternehmen und Organisationen JitsiCloud zu einem attraktiven monatlichen Pauschalpreis an. Was ist JitsiCloud? Die JitsiCloud setzt sich aus Jitsi Meet und Nextcloud zusammen und...

by adminForge.

Jitsi Meet Docker Instanz anpassen

Von: dominion
24. April 2020 um 13:48

Im vorherigen Tutorial habe ich gezeigt, wie die adminForge Jitsi Meet Instanz via Docker/Docker-Compose aufgesetzt wurde. Tutorial: Eigene Jitsi Meet Instanz installieren (Docker / Ubuntu / Nginx) Was ist Jitsi Meet?: Videokonferenzen mit Jitsi...

by adminForge.

Quelle

❌
❌