Docker Container mit Synology DSM

Wie benutzt man Docker mit Synology

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

Docker ist eine schlanke Virtualisierungsanwendung, Tausende von Container erstellt von Entwickler aus der ganzen Welt können ausgeführt werden und sind auf dem bekannten Image-Repository, Docker Hub publiziert. Container Images können aus der Synology integrierten Docker App geladen und ausgeführt werden.

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

  Aufgrund der Hardware-Anforderungen wird Docker nur für Modelle mit Virtualisierungstechnik (VT-x) angeboten. Die in dieser Anleitung verwendeten Modelle sind RS818RP+, RS4018xs+ und DS218+ auf diesen Docker ausführbar ist.




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 jetzt noch kein Container gestartet.

Zusätzlich wird hier im folgenden die Docker Befehlszeile erläutert, diese alternativ für die Docker Console.

CLI   Docker Command Running Container auflisten:

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

CLI   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 grösse und download Bandbreite. Der Status beim herunterladen wird mit einem animierten Symbol dargestellt.

CLI   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. Hinweis: über das Link Symbol öffnet sich die Docker Hub Seite zum Container mit nützlichen Informationen.

CLI   Das Docker Command ist:

Nun auf Starten gehen um den Assistenten zu öffnen.

Auf Weiter um den Assistenten abzuschließen, und mit übernehmen den Container starten.

CLI   Das Docker Command ist:

Der laufende Container ist jetzt im Abschnitt Container zu finden.

CLI   Die vollständige Docker Ausgabe wie folgt:

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

CLI   Das Docker Command 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 der Port 32789, die Port Adresse wird automatisch zugewiesen.

CLI   Ermitteln der Port Adresse

Jetzt können wir PuTTY oder KiTTY öffnen und Verbinden uns mit der IP des Synology NAS und dem Port 32789 zum Container, für CLI   Das Command wie folgt:

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 nützlichere Container Anwendungen, wie Websever für das Entwickeln von Webanwendungen bis hin zu kompletten Entwicklungsumgebungen, es existieren bereits unzählige Docker Images auf Docker Hub https://hub.docker.com, und weiteren Docker Registraren. Dabei fragt mach sich schon, ob der Aufwand zur Installation seiner Entwicklerumgebung wie Xamp oder LAMP überhaupt noch zweckmäßig ist. An dieser stelle sein noch erwähnt, das alle Daten die im Container gespeichert werden, auf einem persistenten Volumen gespeichert werden müssen, denn mit beenden des Containers sind sämtliche arbeiten verloren.

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

 

cURL in der Praxis Anwenden

cURL – Client for URLs Programmbibliothek und Kommandozeilen-Programm

cURL ist ein Kommandozeilentool, es ermöglicht aus Shell- oder Bash-Scrips heraus Dateien über Protokolle wie http, https, ftp, gopher, sftp, ftps oder scp zu übertragen. cURL 1997 von Daniel Stenberg entwickelt, ist bei Webseiten Entwickler sehr beliebt und steht unter der Open-Source MIT-Lizenz.

Unixoide Betriebssysteme enthalten cURL im Standard, ebenfalls ist cURL bereits auch für Windows portiert und steht in der 64 bit und 32 bit Version zur Verfügung. PHP unterstützt die cURL-Funktionen mit der libcrul Bibliothek. Die aktuelle Version 7.63 unterstütz folgende Protokolle: DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, Telnet and TFTP. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP.

cURL bietet vielfältige Anwendungsmöglichkeiten, so lassen sich Websites fernsteuern und testen, Formulare automatisch ausfüllen, Informationen von Webseiten abfragen und in weitere Prozesse verarbeiten. In der Linux Shell-Console ist die Installation von wget nicht zwingend erforderlich, dabei cURL umfangreiche Parameter und Optionen beinhaltet, und bereits vorinstalliert ist.

Im folgenden einige Beispiele zur Anwendung von cURL in der Shell-Console, Webseiten können wie folgt abgerufen werden.

Damit wird die Datei seite.html gelesen und auf der Standardausgabe ausgegeben. Möchten man die Datei unter dem Namen meineseite.html speichern, dient folgender Befehl:

Die eigene Internet IP Adresse mit cURL abrfragen.

Wenn sich eine URL geändert hat, wird oft die Webseite auf die neue URL-Adresse umgeleitet, häufig auch http zu https Umleitungen. Da cURL in der Standard-konfiguration Weiterleitungen nicht folgt, muss man in diesem Fall den Parameter -L übergeben.

Bei Webseiten mit selbst ausgestelltem Zertifikat, oder veraltetem TLS v1.0 Verschlüsselungs-Algorithmus, muss der Parameter -k angewandt werden.

Wird für eine Website eine Benutzer-Authentifizierung über HTTP angefordert, lassen sich mit cURL Benutzername und Passwort übergeben.

Den HTTP-Header mit cURL auslesen.

Mit dem Parameter –head weist man cURL an, die Ausgabe des HTTP-Header auf die Standardausgabe zu geben. Möchte man den Header in die Datei header.txt schreiben, könnte man das durch Pipe Operatoren in der Shell erreichen, oder ohne Unterstützung der Shell durch den Parameter –dump-header.

Der cURL FTP-Client, kann unter vielem anderen auch mit FTP-Server interagieren.

cURL wird angewiesen den Index des Hauptverzeichnisses auszugeben. Benutzername und Passwort werden direkt mit der URL übergeben. Möchten man das Unterverzeichnis files auf dem FTP-Server auflisten, genügt es das Verzeichnis an die URL mitzugeben:

Mit cURL ist auch ein Upload möglich, dazu übergibt man den Parameter -T gefolgt vom Dateinamen und ggf. dem Pfad.

Mit diesem Befehl kopiert cURL die Datei meineseite.html auf den FTP-Server in das Verzeichnis files unter den Dateinamen deineseite.html.

cURL kann noch mehr, durch folgende Befehlszeile wird eine Shell-Script Datei heruntergeladen und gleich ausgeführt, beginnt mit einem Punkt (.).

Dieses Kommando ist in einer Linux Bash-Shell ausführbar, Es werden Systemkonfigurationen und Protokolle ausgelesen und in einer Datei zusammengestellt, und als Datei unter /tmp/sysinfo-*.html gespeichert.

Im folgenden ein Code Beispiel für PHP, das Ergebnis der suche auf Google wird mit echo $result ausgegeben:

Ein Blick in die Man Page man curl  kann sich lohnen, hier sind alle Kommandos mit Beispiele zur Anwendung von cURL aufgeführt.

Quellen Link: curl.haxx.se

Let’s Encrypt auf CentOS 7 mit Apache

Installation von Let’s Encrypt auf CentOS 7 mit Apache

Let’s Encrypt ist eine Zertifizierungsstelle, die kostenlose X.509-Zertifikate für Transport Layer Security (TLS) anbietet. In diesem Tutorial wird erläutert, wie man Let´s Encrypt SSL anhand des ACME Vorgang mit certbot durchführt, und Let’s Encrypt auf einem CentOS 7 Host mit Apache-Webserver implementiert.

  Vorausgesetzt wird hier, das der Apache-Webserver bereits installiert ist, eine Domain im DNS registriert ist, die Domain als Apache VirtualHost konfiguriert ist.

Zur installation wollen wir root werden.

Nun den Apache-Webserver neu starten.

Die Firewall für SSL mit dem Service Port 443 öffnen.

Jetzt durch den certbot das SSL-Zertifikat generieren lassen.

  Die erste Domäne sollte die Basis Domain sein. In diesem Beispiel heißt sie mydomain.com, diese durch den tatsächlichen Domain-Name ersetzen.

Die Ausgabe des certbot sieht in etwa wie folgt aus.

Abschließend kann die URL getestet werden.

Die URL im Browser abrufen und bei SSL Labs verifizieren.

SSL Labs SSL Analyzing Report

Das Let’s Encrypt Zertifikat ist 90 Tage gültig. Für die automatische Erneuerung des Zertifikats, erstellen wir ein neuen Cron-Job.

Das Zertifikat wird einmal im Monat zur Erneuerung überprüft.

 

netstat bei CentOS 7 minimal Installation

Bereitstellen von netstat nach CentOS Minimal Installation

CentOS beinhaltet nach der Minimalinstallation nur wenig des sonst gewohnten Umfangs, eine reihe von System-Tools fehlen, so scheint es zumindest, bei näherer Betrachtung zeigt sich, das es nur neue Befehle sind, die herkömmlichen Tools können aber nachträglich installiert werden.

Ein solches Tool ist netstat, dieses wie folgt hinzugefügt wird.

Ermitteln welches Installationspaket das gewünschte Tool beinhaltet, lässt sich mit der Option whatprovides.

net-tools ist eine Sammlung mit Basis-Netzwerkprogramme. Ist das Paket net-tools installiert, stehen folgende Kommandos auf dem Host zur Verfügung:

Mit den net-tools wird die Verfügbarkeit der veralteten Linux-Netzwerk-Befehle wiederhergestellt, folgende Tabelle zeigt die veralteten Linux-Befehle und die neuen Ersetzungsbefehle:

Veraltete BefehleNeue befehle
arpip n (ip neighbor)
ifconfigip a (ip addr), ip link
iptunnelip tunnel
iwconfigiw
nameifip link
netstatss -t (für netstat -t), ss -u (für netstat -u)
ip route (für netstat -r)
ip -s link (für netstat -i)
ip maddr (für netstat -g)
routeip r (ip route)