Docker: Service aus Container per HTTPS im Internet errreichbar machen.

le0m

Cadet 4th Year
Registriert
Juni 2015
Beiträge
94
Hey Leute,

ich betreibe einen Docker Container auf einem Linux Remote Server. Der Service der im Container läuft ist im Internet per http://Remote-Ip:Port zu erreichen. Ich frage mich gerade wie ich den Service auf HTTPS erreichbar machen kann?

Kann mir jemand sagen wie der Ansatz wäre das Problem zu lösen? Ich bin mir irgendwie nicht sicher ob ich im 'Innreren' des Containers oder auf Ebene des Remote Servers mit der Konfiguration ansetzen soll.

Danke schon mal!
 
Kommt ganz drauf an. Grundsätzlich:
  • Der "Service" muss HTTPS unterstützen.
  • HTTPS muss aktiviert werden (d.h. in der Konfiguration des "Services").
  • Der Port muss geöffnet werden (lokale Firewall im Container / dem Host?) und von außen erreichbar sein (also Forwarding bzw. NAT).
  • Und - funktioniert zwar ohne, ist aber unschön - du solltest ein sauberes SSL-Zertifikat einbinden.
 
Zuletzt bearbeitet:
Auf die gleiche Weise. :)
Musst den Webserver doch nur auf https umstellen, ggf. Zertifikat anhängen und dafür sorgen das statt Port 80 Port 443 durchgereicht wird.
 
Der "Service" muss HTTPS unterstützen.
Meinst du damit dass Docker HTTPS unterstützen muss oder dass der Service, welcher im Container läuft HTTPS unterstützen muss?
Docker leitet (so wie ich das verstehe) den Service aus dem Container von Container-IP:Port-X nach Remote-Server-IP:Port-Y um.

HTTPS muss aktiviert werden (d.h. in der Konfiguration des "Services").
Also muss ich HTTPS nur im Container aktivieren und beim Remote-Server nicht?

Musst den Webserver doch nur auf https umstellen, ggf. Zertifikat anhängen und dafür sorgen das statt Port 80 Port 443 durchgereicht wird.
Das wäre natürlich das einfachste. Wenn das funktioniert wäre toll!
 
anstelle des direkten zugriffs auf die ports des jeweiligen containers würde ich immer den weg eines proxy servers direkt am hostsystem gehen und damit den container unter einem (v)hostnamen verfügbar machen. dafür gäbe es sogar eine reine docker lösung https://github.com/jwilder/nginx-proxy

wenns unbedingt auf ip basis sein soll, dann kann https genauso wie http über jeden beliebigen port laufen. dein jeweiliger container muss dann aber direkt ssl unterstützen (bei den wenigsten standardcontainern der fall).
 
Was läuft denn für ein Webserver drinnen ?
Da Linux vermute ich mal nginx oder Apache.
Im Container läuft ein node:6.1.0-onbuild image, welches ein schlankes Debian verwendet müsste.

anstelle des direkten zugriffs auf die ports des jeweiligen containers würde ich immer den weg eines proxy servers direkt am hostsystem gehen und damit den container unter einem (v)hostnamen verfügbar machen. dafür gäbe es sogar eine reine docker lösung https://github.com/jwilder/nginx-proxy
Klingt interessant!
Wenn ich das richtig verstehe könnte ich mit dem nginx-proxy auf relativ einfache Weise unterschiedliche Services von unterschiedlichen Containern auf unterschiedlichen Domains zur verfügung stellen?

wenns unbedingt auf ip basis sein soll, dann kann https genauso wie http über jeden beliebigen port laufen. dein jeweiliger container muss dann aber direkt ssl unterstützen (bei den wenigsten standardcontainern der fall).
Es soll nicht unbedingt auf IP basis sein.

Die Lösung per nginx-proxy gefällt mir auf dem ersten Blick ganz gut! Gebe es noch weitere alternativen?
 
die alternative die ich meist verwende ist ein nginx oder apache proxy direkt am host system. und dazu noch letsencrypt für automatische zertifikate
 
Zurück
Oben