In einem früheren Beitrag habe ich darüber gesprochen, wie SSHeller Ihnen hilft, einen OpenVPN-Server schnell und einfach bereitzustellen. In Version 1.1.0 wurde ein weiteres Plugin hinzugefügt - Docker .
Ich möchte Sie sofort warnen, dass Sie, wenn Ihre Hände unter der Konsole geschärft sind und Docker über die Befehlszeile zu steuern, bequem und intuitiv erscheint. Sie müssen nicht weiter lesen, Sie müssen nichts in die Kommentare schreiben. Ich weiß bereits, dass Sie SSHeller nicht benötigen.
Und wer braucht das? Zuallererst Webanwendungsentwickler sowie alle, die schnell und einfach einen Dienst aktualisieren müssen, sei es eine Website, ein Blog oder ein spontaner Dateifreigabedienst.
Wie funktioniert es?
Wir brauchen einen Server mit fast jeder modernen Linux-Distribution. Aber im Gegensatz zu OpenVPN würde ich für Docker Debian 9
oder Ubuntu 18.04
empfehlen. Bei Fedora
und Centos
es etwas schlimmer aus, da Sie mehr Pakete installieren, Autorun zusätzlich konfigurieren und mit dem Speicher etwas anders arbeiten müssen.
Das Wichtigste ist, dass es sich entweder um eine physische oder eine virtuelle Maschine handelt, jedoch nicht um einen Container (LXC, OpenVZ funktioniert nicht). Und Sie benötigen SSH-Zugang. In der letzten Veröffentlichung finden Sie eine detaillierte Beschreibung zum Registrieren und Starten des Servers in DigitalOcean und am Ende eine etwas weniger detaillierte Anweisung für Linode. Beide Dienste bieten einfache Maschinen für 5 USD / Monat und Boni bei der Registrierung per Empfehlungslink. Zunächst wird dies völlig ausreichen.
Sobald wir die IP, den Benutzernamen und das Passwort für den Server haben, können Sie SSHeller installieren. Sie können es von Releases auf GitHub herunterladen. Es gibt Versionen für MacOS, Windows und Linux. Fügen Sie nach dem Start unseren Server hinzu, stellen Sie eine Verbindung her und rufen Sie das Docker- Plugin auf.

Wenn Docker noch nicht auf dem Server installiert ist, können Sie dies tun, indem Sie auf die Schaltfläche Install
klicken.
In weniger als einer Minute ist die Installation abgeschlossen, ein Bericht wird geöffnet, den Sie erstellen können nicht Lesen und schließen, und im Hauptfenster wird eine Liste der Container, Volumes und die Startform eines neuen Containers angezeigt.

Hauptfunktionen
Containerstart
Ganz unten im Arbeitsbereich befindet sich der Startblock des neuen Containers. Es zeigt an:
- Aus der obigen Liste ausgewähltes Volume, das mit dem Container verbunden wird, sofern dies unterstützt wird
- Das Kennwort, das für die Anwendung im Container erneut festgelegt wird, sofern dies unterstützt wird
- Auswahl des Containerbildes
- und Bild-Tag-Auswahl
Sie können jedes offizielle Docker-Image und einige zusätzliche auswählen. Ihre Liste befindet sich in der Datei https://github.com/delfer/ssheller/blob/master/plugins/docker-profiles.json und zum Zeitpunkt der Veröffentlichung lautet sie:
- jwilder / nginx-proxy - Nginx wird automatisch für den Zugriff auf Container über einen Domänennamen und nicht über einen Port konfiguriert
- panubo / vsftpd - FTP-Server
- coderaiser / cloudcmd - WEB-Schnittstelle für den Zugriff auf Dateien
- webdevops / php-apache-dev - Apache + PHP + Module für die Entwicklung erstellen (zeigt Fehler an)
- webdevops / php-apache - Apache + PHP + Module für "Verkauf" erstellen (zeigt keine Fehler an)
- webdevops / php-nginx-dev - Nginx + PHP + Module für die Entwicklung erstellen (zeigt Fehler an)
- webdevops / php-nginx - Nginx + PHP + Module für "Verkauf" erstellen (zeigt keine Fehler an)
Die meisten Container ignorieren den Inhalt des Felds Kennwort , mit Ausnahme der in docker-profile.json ( Parameterabschnitt ) aufgeführten:
- panubo / vsftpd - Passwort für die FTP-Verbindung als Administrator
- coderaiser / cloudcmd - Passwort für die Anmeldung als Administrator
- mysql / mariadb / postgres / influxdb - Passwort für die Verbindung zur Datenbank als Administrator
- rabbitmq / couchdb / orientdb - Passwort für die Verbindung als Administrator
Wichtige Funktionen:
- Tags werden nach Auswahl eines Bildes automatisch geladen. Suche verfügbar
- Der Container ist an dem vom Autor angegebenen Port verfügbar. Wenn der Port belegt ist, wird der erste freie Port ausgewählt.
- Der Container ist unter <Containername>. <Serverdomäne> verfügbar, wenn entsprechende Einträge im DNS vorhanden sind
- Volumes werden für den Container erstellt, wenn sie vom Autor des Bildes angegeben wurden oder in docker-profile.json (Abschnittsvolumes) angegeben sind.
Hilfreiche Ratschläge:
- jwilder / nginx-proxy muss zuerst gestartet werden, damit es Port 80 belegt
- panubo / vsftpd muss zuletzt ausgeführt werden, da beim Start die Berechtigungen des Ordners geändert werden, um vollen Zugriff darauf zu erhalten
- Es ist fast immer besser, ein Bild mit dem
alpine
oder dem latest-alpine
Tag zu verwenden - sie funktionieren wie normale Bilder, werden jedoch aufgrund des geringeren Gewichts viel schneller geladen - Wenn Sie MySQL benötigen, verwenden Sie MariaDB besser, es sei denn, Sie sind sich definitiv nicht sicher, ob MariaDB nicht für Sie geeignet ist
- Wenn Sie etwas mit PHP ausführen, benötigen Sie wahrscheinlich keine
fpm
, aber apache
Weitere Informationen
Nach dem Klicken auf die Schaltfläche RUN
wird nach dem Start des Containers ein Berichtsfenster angezeigt, in dem der abgeschlossene docker run
angezeigt wird. Sie wird viele interessante Dinge darüber erzählen, wie alles tatsächlich arrangiert ist.
Domain Name Access
Wenn Sie mehrere Container mit einer Weboberfläche ausführen, z. B. Wordpress und NextCloud, und nicht durch Angabe einer IP-Adresse und eines Ports, sondern über einen Domänennamen auf diese zugreifen möchten, müssen Sie zwei einfache Bedingungen erfüllen:
- Seien Sie der Erste, der jwilder / nginx-proxy ausführt
- Platzhalter-DNS-Eintrag haben

Das heißt, Wenn Sie beispielsweise die Domain example.com haben, müssen Sie einen Datensatz vom Typ *
hinzufügen und die Server-IP angeben. In diesem Fall ist der laufende Worpdress- Container unter http://wordpress.example.com verfügbar
Und wenn es keine Domain gibt - kein Problem, können Sie den Dienst nip.io verwenden - müssen Sie sich nicht registrieren oder Einträge hinzufügen. Wenn auf Ihrem Server beispielsweise IP 172.104.129.183 und jwilder / nginx-proxy ausgeführt werden und nextcloud darauf ausgeführt wird , ist letzterer unter http://nextcloud.172.104.129.183.nip.io verfügbar
Ausführen von zwei Containern mit einem Volume
Es kommt beispielsweise häufig vor, dass ein Container Dateien ( nginx ) veröffentlicht und der zweite herunterlädt ( panubo / vsftpd ). Oder die zweite wird benötigt, um den Inhalt der ersten anzuzeigen / herunterzuladen.
Beispielsweise fragt Jenkins nach dem Start nach dem in der Datei aufgezeichneten Kennwort.

- Starten Sie Jenkins
jenkins_var_jenkins_home
des Volumens jenkins_var_jenkins_home
- Geben Sie ein Kennwort für den Zugriff an
- Starten Sie coderaiser / cloudcmd
- Öffnen http: // coderaiser-cloudcmd . <Domäne>, geben Sie den
admin
Login und das Passwort aus Schritt 3 ein - Wir sehen uns das Passwort von Jenkins an


Container-Interaktionen
Möglicherweise müssen Sie auch von einem Container aus eine Verbindung zu einem anderen herstellen. Beispielsweise werden Sie während der Installation in WordPress aufgefordert, die Parameter für die Verbindung zur Datenbank anzugeben: Serveradresse ( Host ) und Port.
localhost
funktioniert nicht für die Interaktion zwischen Containern.
Im Allgemeinen müssen Sie die externe IP- Adresse des Servers und den angezeigten Port angeben
vor dem Pfeil ( ->
) in der Containerliste. Der Einfachheit halber wurde anstelle der Server- IP- Adresse die Möglichkeit hinzugefügt, nur das Wort host
anzugeben.
Zusätzlich zu MySQL können PostgreSQL, MongoDB, Redis, Memcached, Tomcat, InfluxDB, CouchDB usw. nützlich sein.
Anwendungsbeispiele
Dateifreigabe
- Führen Sie nginx: alpine
- Geben Sie das Administratorkennwort für die Weboberfläche ein
- Wählen Sie das
nginx_usr_share_nginx_html
- Starten Sie coderaiser / cloudcmd: latest-alpine
Jetzt können Sie unter http: // <Serveradresse>: 8000 Dateien mit Autorisierung herunterladen. Direkte Links sind über http: // <Serveradresse> verfügbar. Sie müssen nur den vollständigen Pfad zur Datei angeben.
Wordpress
- Wir erfinden und geben ein Passwort für die Datenbank ein
- Mariadb startet
- Führen Sie WordPress: Apache aus
- Wir gehen zur Adresse http: // <Server-Adresse> , starten die Installation und geben die Parameter für die Verbindung zum DBMS an:
- Datenbankname:
db
- Benutzername:
admin
- Passwort - das in Absatz 1 eingegebene
- Datenbankserver:
host
- Tabellenpräfix - Beliebig
Lampe
- Wir erfinden und geben ein Passwort für die Datenbank ein
- Mariadb startet
- Führen Sie webdevops / php-apache-dev: alpine aus
- Wählen Sie das Volume
webdevops-php-apache-dev_app
- Wir erfinden und geben das Passwort für den FTP-Server ein
- Führen Sie panubo / vsftpd aus
Jetzt können Sie .php
Dateien auf ftp: // <Server-Adresse> hochladen und unter der Adresse http: // <Server-Adresse> ausführen
PS
Nicht alle Container sind in der Anwendung verfügbar, und einige der verfügbaren funktionieren ohne zusätzliche Einstellungen nicht. Bearbeiten Sie die Datei auf GitHub und senden Sie Ihre Pull-Anfragen. Wenn Sie nicht wissen wie - öffnen Sie die Ausgabe . Dies wird Ihnen bei der Entwicklung des Projekts helfen.
Weitere Möglichkeiten zur Unterstützung des Projekts sowie viele nützliche Informationen finden Sie in der README-Datei .