Docker DevOps Continuous Delivery

Docker im DevOps und Continuous Delivery Umfeld wird ein zunehmend wichtiger Bestandteil. Docker ist eine Virtualisierungslösung, die ohne Hypervisor auskommt, es wird Operating-system-level Virtualization mit Linux-Containern verwendet. Im Backend verlässt Docker sich ausschließlich auf LXC. Diese Container sind unabhängig voneinander, aber verwenden Teile des Linux-Kernels als Abstraktion gemeinsam. Dadurch ist die Effizienz wesentlich höher als bei anderen Virtualisierungslösungen.

Auf Operating-system-level Virtualization basierende Lösungen sind die bekanntesten Vertreter dieser Technik die Linux-Container. Dabei ist Docker weit verbreitet. Docker konkurriert mit dem auf App Container (appc) basierendem Rocket (rkt). Die Open Container Initiative (OCI) strebt eine Vereinheitlichung und gemeinsame Standards für Container-Formate und Container-Laufzeitumgebungen an.

Das Docker Prinzip

Nicht wie Hypervisoren zur Virtualisierung bietet Docker keine vollständige Virtualisierung von virtuellen Maschinen, vielmehr handelt es sich um Linux-Container (LXC oder Libcontainer, und chroot, Namespaces, Cgroups). Diese Container sind unabhängig voneinander, aber verwenden Teile des Linux-Kernels gemeinsam. Dadurch ist die Effizienz wesentlich höher als bei anderen Virtualisierungslösungen. Auf einer Hardware können wesentlich mehr Docker-Container betrieben werden als VMs.

Diagramm: Virtual Machines und Containers

Als Hypervisor basierte Lösung war Docker bis April 2016 auf Linux Host Systeme angewiesen. Auf Windows und Mac OS X konnte es nur mit einem zusätzlichen Linux-Layer installiert werden, beispielsweise über Docker Toolbox (beinhaltet Boot2Docker und Oracle VirtualBox). Ähnliches gilt für das Gast-Betriebssystem wo nur Linux möglich ist. Der Gast verwendet den Linux-Kernel des Host Systems.

Seit April 2016 gibt es Beta-Versionen von Docker for Mac and Docker for Windows, die als native Anwendungen laufen und ohne VirtualBox auskommen. Die Docker-Engine läuft unter einem Alpine-Linux auf einer virtuellen Maschine (Hyper-V bei Windows und xhyve in OS X).

Die Docker Machine

Die Boot2docker Machine unter Windows 10 wird als Virtuelle Linux Machine in VirtualBox ausgeführt. DevOps die beim deployen mit ESXi Hypervisoren arbeiten, benutzen oft die VMware Workstation, diese performanter ist als die VirtualBox, bevor die VMware Workstation aber genutzt werden kann, wird der Treiber von pecigonzalo benötigt, die Treiberdatei Docker Machine VMware Workstation Driver wird in das Programm Verzeichnis, Docker Toolbox kopiert.

  Docker Machine VMware Workstation Driver

Dieses Plugin für Docker Machine erstellt Docker-Hosts lokal auf einer VMware Workstation.

Abbildung: boot2docker shell

Docker – Up and Running: von Karl Matthias bei O’REILLY

Docker: Up & Running: Shipping Reliable Containers in Production

 

Windows Blickpunkt Reparieren

Windows Blickpunkt ist eine in Windows 10 enthaltene Funktion, die Bing das automatische Herunterladen von Hintergrundbilder verwendet, damit hat man gelegentlich bei der Anmeldung ein neues Hintergrundbild beim Sperrbildschirm.

Der einzige Nachteil von Windows Blickpunkt besteht darin, dass es manchmal nicht mehr funktioniert, oder man konnte feststellen, dass es auf demselben Bild stehen bleibt. Leider enthält Windows 10 keine Option zum Zurücksetzen dieser Funktion. Es ist jedoch möglich, die Windows Blickpunkt-Einstellungen mit dieser einfachen Problemumgehung zu beheben.

  Einstellungen öffnen, klicke -> Personalisierung und dann -> Sperrbildschirm, hier Hintergrund auf Bild umstellen.

Dann mit Rechtsklick auf Desktop  -> Neu -> Textdokument und den folgenden Inhalt einfügen:

Auf Datei -> Speichern unter, und als Dateiname Blickpunkt.bat Speichern.  Über der Datei mit Rechtsklick öffnet sich das Kontextmenü, hier als Administrator ausführen wählen.

Nun den Computer neu Starten. Danach wieder die Einstellungen öffnen und unter Personalisierung -> Sperrbildschirm auf Windows-Blickpunkt umstellen.

Sobald diese Schritte ausgeführt sind, kann man den Computer mit L sperren, jetzt sollte der Sperrbildschirm neue Bing-Bilder anzeigen.

  Tip  Möchte man weiterhin die von Bing heruntergeladenen Hintergrundbilder behalten und als Desktop Hintergrund verwenden, kann man die Bilder in einen Ordner kopieren, dazu öffnet man Ausführen   + R und fügt folgende Zeile ein, mit OK ist man im Ordner:

Den Inhalt in einen zuvor erstellten Ordner kopieren, beispielsweise unter:

Die von Bing heruntergeladenen Dateien haben kryptische Namen und bestehen aus Zahlen und Buchstaben (Hexadezimal), diese Dateien werden umbenannt, in dem wir eine Eingabeaufforderung öffnen mit + R und cmd eingeben und mit OK bestätigen, dann im Ordner mit den kopierten Dateien folgenden Befehl ausführen:

Jetzt haben die Dateien .jpg als Endung, und können somit in der Windows-Explorer vorschau betrachtet werden, unter Einstellungen -> Personalisierung -> Hintergrund lassen sich nun diese Bilder aus dem Ordner Hintergrundbilder wählen, oder als Diashow automatisch anzeigen lassen.

 

Docker in Synology

Docker ist eine einfache Virtualisierungsanwendung, mit dieser Tausende von Containern erstellt und ausgeführt werden können, die von Entwicklern aus der ganzen Welt erstellt wurden. Das weit verbreitete integrierte Image-Repository Docker Hub ermöglicht es, publizierte Anwendungen von talentierten Entwicklern zu finden.

Synology ab DSM Version 6.0 kommt mit Docker Engine. Zu finden ist die Docker App im Paket Zentrum mit Eingabe docker im Suchfeld.

  Wenn die Docker App im Paketzentrum nicht erscheint, wird deine Synology DSM Version  höchstwahrscheinlich nicht unterstützt.

  Aufgrund der Hardware-Anforderungen wird Docker nur für Modelle mit leistungsfähigeren Prozessoren verfügbar sein. Das in dieser Anleitung verwendete Modell basiert auf der Rackstation RS818RP+ und RS4018xs+.



Wie benutzt man Docker

Mit dem öffnen des Hauptmenu Symbol aus DSM findet sich das Icon für die Docker Engine die jetzt gestartet werden kann.

Docker öffnet den Überblick, hier sind die laufenden Container aufgeführt, die Anwendungen einschließlich zugewiesenem Speicher und CPU-Ressourcen, es ist hier noch kein Container gestartet.

Zusätzlich wird hier im folgenden die Docker Befehlszeile erläutert,  diese man in der Docker Console ausführen würde, das dazu ausgeführte Docker Command ist:

Im Abschnitt Registrierung kann nach neuen Images gesucht werden (wie auf der offiziellen Website). Es können auch neue Repositories (zusätzlich zur offiziellen Site) unter Einstellungen hinzugefügt werden.

Das original Docker Command ist:

Nachdem ein passendes Image (Abbild) gefunden wurde, in diesem Fall ein kleines Ubuntu 18.04 Dockerized SSH service Image, wird es mit einem Rechtsklick auf das Synology NAS herunterladen, am besten immer latest wählen. Alle Images sind schreibgeschützt und können mehrfach für weitere Container verwenden werden.

Das herunterladen kann einige Minuten in Anspruch nehmen, je nach download Bandbreite. Der Status beim herunterladen wird mit einem animierten Symbol hübsch dargestellt.

Das Docker Command ist:

Unter Abbild befinden sich die heruntergeladenen Images die auf dem Synology NAS verfügbar sind. Es können neue Container mit dem  Assistenten Angedockt, gestartet werden.

Das Docker Command ist:

Nun auf Starten gehen um den Assistenten zu öffnen.

Auf Weiter um den Assistenten zu beenden, und mit übernehmen den Container starten.

Das Docker Command ist:

Der laufende Container ist jetzt im Abschnitt Container zu sehen.

Zurück in der Docker Übersicht sehen wir nun die Resourcen der gestarteten Container.

Das Docker Coammand ist:

Nun versuchen wir ein SSH-Terminal zum Container herzustellen. Dazu sehen wir im Abschnitt Container mit klick auf Details, auf welchem Port der SSH-Dienst horcht.

Im Überblick unter Port-Einstellungen finden wir bei Lokaler Port den gesuchten Wert, in diesem Fall ist es den Port 32789.

Jetzt können wir PuTTY oder KiTTY öffnen und Verbinden uns mit der IP des Synology NAS und dem Port 32789 zum Container.

Anmelden mit root und dem Passwort root.

Die Docker Engine kann auch aus der Console genutzt werden, sofern das SSH Terminal unter DSM Systemsteuerung – SSH-Dienst aktiviert wurde.

Die in diesem Artikel gezeigte Anwendung von Docker soll als einfaches Beispiel darstellen, wie Docker auf einem Synology NAS anwendbar ist, natürlich gibt es sinnvollere Container Anwendungen, zB. Websever für das Entwickeln von Webanwendungen bis hin zu kompletten Entwicklungsumgebungen, dazu existieren bereits unzählige Anwendungen auf Docker Hub https://hub.docker.com, und vielen weiteren Docker Registraren. Dabei fragt mach sich schon, ob der Aufwand zur Installation seiner Entwicklerumgebung wie Xamp oder LAMP überhaupt noch zweckmäßig ist.

Auch gibt es weitere Artikel zur Anwendung von Docker hier im Think Tank Blog, am besten einfach docker ins Suchfeld oben eingeben.

 

Digital Signage selber gemacht

Unter dem Begriff Digital Signage wird der Empfangsbildschirm und Begrüßungsbildschirm verstanden. An den Stellen, an denen sich Informationen tagtäglich mehrmals ändern, sind digitale Lösungen für Info- und Begrüßungsbildschirme bei Unternehmen, in der Hotel Lobby oder öffentlichen Veranstaltungen anzutreffen.

Informationsbildschirme zur Besucherbegrüßung

bieten vielseitige Möglichkeiten und vermitteln einen professionellen Eindruck. Denn gerade hier gilt: „Der erste Eindruck zählt!“ Es soll Besucher Faszinieren und dem Kunden gleich beim ersten Kontakt eine optimale Atmosphäre verschaffen.

Auf dem Markt bieten sich diverse Produkte an, als Software oder als Cloud-Lösung. Es werden zeitgesteuerte Begrüßungen, Raumbelegungen, Veranstaltungen, Mitarbeiter-Infos und Zeitpläne vom eignen Computer oder Tablet aus, auf entfernten Bildschirmen angezeigt.

In diesem Beitrag wird beschrieben, wie ein Digital Signage selber umgesetzt werden kann, als Basis dazu dient die Software FrontFace von Mirabyte, die Hardware besteht aus einem Intel NUC Barebone PC, es wird also kein Cloud Dienst in Anspruch genommen.

Warum kompliziert, wenn es auch einfach geht?

FrontFace for Public Displays kann auf jedem Windows PC (Windows 7, 8.1 oder 10) eingesetzt werden und kann beliebige Flachbildschirme, Fernseher oder Monitore ansteuern! So braucht man keine proprietäre und teure Hardware anzuschaffen. Die Einrichtung eines Servers oder Änderungen an der Firewall ist nicht erforderlich. Die Installation und Inbetriebnahme von FrontFace ist in 15 Minuten erledigt!

Der Player PC

Die Systemkomponenten des Player PC bestehen aus einem Intel NUC mit 4 GB DDR4 Memory und 120 GB M.2 SSD Speicher.




Player-PC mit Bildschirm verbinden

Die meisten Flachbild-TV und Bildschirme verwenden HDMI. In diesem Fall braucht es also ein HDMI-Kabel. Weitere Standards sind VGA, DVI, DisplayPort und Mini DisplayPort. Es gibt auch Adapter mit denen die Anschlüsse eines Kabels umgewandelt werden können (z.B. HDMI zu DisplayPort).



Für die Wandmontage eignet sich die bewegliche TV-Wandhalterung WALL 3145, diese trägt Fernseher mit einem Gewicht von bis zu 15 kg. Mit der WALL 3145 lässt sich nahezu jeder Fernseher zwischen 19″ und 40″ (48-102 cm) an der Wand montieren.

Präsentationssystem

FrontFace for Public Displays ist ein leistungsfähiges Präsentationssystem mit integriertem Content Management, welches es ermöglicht, auf einfache weise Bildschirme und Großbildschirme, zentral und zeitgesteuert mit beliebigen Informationen, Inhalten und Medien zu versorgen. Egal ob mit Bildern, Videos, Texten, PDF-Dateien, RSS (Nachrichten-Schlagzeilen), Wetterinformationen oder Webseiten im HTML-Format – mit FrontFace geht das ganz einfach! Dank der genialen Print2Screen-Funktion können Inhalte sogar aus beliebigen Anwendungen (PowerPoint, Word, Excel, etc.), die über eine Druckfunktion verfügen, in erstklassiger HD-Qualität mit nur einem Klick erstellt und eingebunden werden.

Das Software Paket besteht aus FrontFace Assistent und FrontFace Player, der Player wird auf dem Intel Barebone PC installiert, dieser über das HDMI Kabel mit dem Flachbild-TV verbunden ist. Der FrontFace Assistent kann auf beliebig vielen Computer installiert werden, wo die Präsentation zusammengestellt, und anschließend zum Player übertragen wird.

Quellen Link: https://www.mirabyte.com

 

FortiClient SSL-VPN Failed

Failed to establish the VPN connection. This may be caused by a mismatch in the TLS version. Please check the TLS version settings in the Advanced of the Internet options. (-5029)

Beim FortiClient kann der aufbau einer SSL-VPN Verbindung zur FortiGate folgende Warnung ausgeben.

Symptom

Ursache

Das mittlerweile veraltete kryptografische Protokoll TLS 1.0 ist ab FortiOS 6.0 per default nicht mehr aktiviert. Es wird empfohlen mindestens TLS 1.1 (Cipher Suites) für Authentifizierung und Datenverschlüsselung  zu verwenden. Wir sind derzeit bei TLS 1.3, das von der IETF (Internet Engineering Task Force) genehmigt wurde.

Lösung

Möchte man ältere Clients weiter verwenden, die man im verlauf einer Migration über Update Rollout erst später mit TLS 1.2 oder höher einsatzbereit hat, kann auf der FortiGate das TLS 1.0 aktiviert werden.

Überprüfen der aktuellen TLS Einstellung, aus der FortiGate Console mit CLI Command:

Im CLI die Cipher Suite TLS 1.0 aktivieren.


Auch kann beim Client die TLS Version aus dem Windows Snapin (inetcpl) Internet Option angepasst werden.

+ R und der Eingabe von inetcpl.cpl

Im Fenster Eigenschaften von Internet – Erweitert, die TLS Version 1.0, 1.1 und 1.2 aktivieren.

Weitere Problemlösungen

Bei älteren Windows Versionen, oder bei Router mit PPPoE Internet Anbindung, können Fehler beim aufbau von SSL-VPN Verbindungen wie folgt behoben werden.

Es erscheint im FortiClient die Fehlermeldung:

Unable to establish the VPN connection. The VPN server may be unreachable (-5)

Dazu überprüft man die MTU grösse der Netzwerkschnittstellen, mit folgendem Befehl aus einer geöffneten Eingabeaufforderung

Die Ausgabe kann in etwa wie folgt aussehen:

Die MTU Size überprüfen und ggf. auf 1400 anpassen. In einer als Administrator geöffneten Eingabeaufforderung, mit ausführen von netsh.

Alternativ dazu Regedit aufrufen und zu folgendem Schlüssel navigieren.

unter dem entsprechenden Interface mit der passenden IP Adresse, hier {222e135b-d09c-47a3-9236-63a041a02ea6} den Schlüssel MTU mit Wert 578 Hexadecimal ändern.

Nach einem Computer neustart kann die SSL-VPN Verbindung aufgebaut werden.

Python Loops mit Break- Continue- Pass


 for- und while-Loops auf effiziente Weise für zyklische und automatisierte Aufgaben nutzen.

Synopsis

Manchmal bestimmen externe Faktoren wie Schleifen in einem Programm durchlaufen werden. Wenn dies eintrifft, möchte man möglicherweise dass die Schleife in einer Routine vollständig beendet wird, oder einen Teil der Schleife überspringt, bevor sie fortfährt, oder es soll ein externer Faktor ignorieren werden. Diese Aktionen können mit der Anweisung breakcontinue und pass durchgeführt werden.

Anweisung break

In Python bietet die break Anweisung die Möglichkeit, eine Schleife zu verlassen, wenn eine externe Bedingung ausgelöst wird. Hierzu setzen wir die break Anweisung in den Codeblock unterhalb der Schleife, normalerweise nach einer bedingten if-Anweisung.

Schauen wir uns ein Beispiel an, das die break Anweisung in einer for-Schleife anwendet:

In diesem kleinen Programm wird die Variable zahl auf 0 initialisiert. Dann wird eine for-Anweisung in die Schleife gelegt, diese durchläuft solange die Variable zahl kleiner als 10 ist.

Innerhalb der for-Schleife erhöht sich die Zahl bei jedem Durchlauf bedingt um inkrementell 1 zahl = zahl + 1.

Dann bei der if-Anweisung die den Zustand zeigt, wenn die Variable zahl der ganzen Zahl 5 entspricht, wird die Schleife abgebrochen.

Innerhalb der Schleife befindet sich auch eine print() Anweisung, die bei jeder Iteration der for-Schleife ausgeführt wird, bis die Schleife bei der break Anweisung abbricht.

Um zu sehen, wann wir außerhalb der Schleife sind, haben wir eine abschließende print() Ausgabe außerhalb der for-Schleife eingefügt.

Wenn wir diesen Code ausführen, erscheint unsere Ausgabe wie folgt:

Es zeigt sich, sobald die Ganzzahl zahl als äquivalent zu 5 bewertet wurde, die Schleife abbricht, da das Programm dies durch die break-Anweisung tun soll.

Die break-Anweisung bewirkt also, dass ein Programm aus einer Schleife ausbricht.

Anweisung continue

Die continue-Anweisung gibt uns die Möglichkeit, den Teil einer Schleife zu überspringen, in diesem eine externe Bedingung ausgelöst wird, aber bis zum Rest der Schleife beendet wird. Das heißt, die aktuelle Iteration der Schleife wird unterbrochen, aber das Programm kehrt zum Anfang der Schleife zurück.

Die continue-Anweisung befindet sich innerhalb des Codeblocks unter der Schleifenanweisung, normalerweise nach einer bedingten if-Anweisung.

Wenn wir das selbe in einem for-Loop wie oben mit der Break-Anweisung anwenden, verwenden wir einfach eine continue-Anweisung anstelle der break-Anweisung:

Der Unterschied bei der Verwendung der continue-Anweisung anstelle einer break-Anweisung besteht darin, dass unser Code trotz der Störung weiter durchläuft, wenn die Variable zahl gleich 5 bewertet wird. Schauen wir uns unsere Ausgabe an:

Hier sehen wir, dass die Linie „Zahl ist 5“ nie in der Ausgabe erscheint, aber die Schleife fährt nach diesem Punkt fort, und die Zahlen 6-10 werden ausgegeben, bevor die Schleife verlassen wird.

Mit der continue-Anweisung können in tief verschachtelten Code Fehler vermeiden werden, auch könne hierdurch Loops optimiert werden, indem man häufig auftretende Fälle, die man ablehnen möchten, eliminiert.

Die continue-Anweisung bewirkt, dass ein Programm bestimmte Faktoren überspringt, die innerhalb einer Schleife auftreten, und dann den Rest der Schleife fortsetzt.

Anweisung pass

Wenn eine externe Bedingung ausgelöst wird, kann mit der pass-Anweisung die Bedingung verarbeitet werden, ohne dass die Schleife in irgendeiner Weise beeinträchtigt wird. Der gesamte Code wird weiterhin gelesen, sofern keine break oder eine andere Anweisung auftritt.

Wie bei den anderen Anweisungen befindet sich die pass-Anweisung innerhalb des Codeblocks unter der Schleifenanweisung, normalerweise nach einer bedingten if-Anweisung.

Verwenden wir den gleichen Codeblock wie oben, ersetzen jedoch die Anweisung break oder continue durch eine pass-Anweisung:

Die pass-Anweisung, die nach der if-bedingten Anweisung auftritt, teilt dem Programm mit, die Schleife weiterhin auszuführen und ignoriert die Tatsache, dass die Variable zahl während einer ihrer Iterationen als äquivalent zu 5 bewertet wird.

Wir werden das Programm ausführen und uns die Ausgabe ansehen:

Bei Verwendung der pass-Anweisung in diesem Programm stellen wir fest, dass das Programm genauso ausgeführt wird, als wenn es keine bedingte Anweisung im Programm gäbe. Die pass-Anweisung weist das Programm an, diese Bedingung zu ignorieren und das Programm wie gewohnt weiter auszuführen.

Die pass-Anweisung kann minimale Klassen erstellen oder als Platzhalter fungieren, wenn an neuem Code gearbeitet wird und auf einer algorithmischen Ebene gedacht wird, bevor Details herausgearbeitet werden.

Fazit

Durch die break, continue und pass-Aussagen in Python ermöglicht es uns, for– und while-Loops im Code effektiver anwenden zu können.

 

Zugriff auf Virtuellen Festplatten

Manchmal kann es nützlich sein, Daten von virtuellen Festplatten zu lesen oder Dateien von einer virtuellen Partition in eine andere zu kopieren, ohne das virtuelle Betriebssystem zu booten. In diesem Fall wird es erforderlich, die virtuelle Festplatte zu öffnen um den Inhalt zu lesen. Außerdem können Dateien auch gelöscht, verschoben oder zu einer virtuellen Maschine hinzufügt werden, um beispielsweise ein nicht mehr Boot fähiges System zu reparieren oder Offline-Windows-Updates auszuführen.

Eine weitere Möglichkeit ergibt sich zur Wiederherstellung von Daten aus einer Snapshot Sicherung, beispielsweise bei VMware Consolidated Backup durch ghettoVCB.

Es gibt viele verschiedene Möglichkeiten, wie auf den Inhalt eines virtuellen Laufwerks zugegriffen werden kann, ohne das virtuelle Betriebssystem selbst zu booten. Hier wird die recht einfache Lösungen mit 7-Zip vorgestellt.

7-Zip ist wahrscheinlich das beliebteste kostenlose Archiv-Tool, dieses auch die Möglichkeit bietet, VHD-, VDI- und VMDK-Disk-Images zu öffnen. Es können benötigte Dateien einfach aus der virtuellen Maschine extrahiert werden, oder aber das Archive wird über die Schaltfläche Extrahieren in ein Ordner kopiert.

Abbildung: 7-Zip Kontextmenu Flat VMDK öffnen.

Um ein virtuelles Laufwerk zu öffnen, klicken man mit der rechten Maustaste auf die Flat VMDK oder VHD Datei um die virtuelle Festplatte über das 7-Zip-Kontextmenü zu öffnen. Es werden nur Single-Volume-VDIs unterstützt, wenn es mehr als eine Partition gibt, wird kein Root- Verzeichnis geöffnet. Multi-Volume-VHD und VMDK-Dateien werden aber unterstützt, dabei werden die Partitionen nummeriert angezeigt, 0 ist oft die Reserved Boot-Partition, 1 ist die Haupt-Windows-Partition und 2 ist die Partition für das Laufwerk D.