ubuntuusers.de

Docker Netzwerk, Dockercontainer vernetzen

Status: Ungelöst | Ubuntu-Version: Server 16.04 (Xenial Xerus)
Antworten |

toblex

Anmeldungsdatum:
27. November 2017

Beiträge: 2

Hallo Zusammen,

ich habe auf einem Server einen Dockercontainer laufen welcher über openvpn ein VPN zur verfügung stellt. Nun möchte ich durch einen anderen Dockercontainer Dienste hosten die nur für vpn clients verfügbar sind (upnp media server).

Leider fehlt mir gerade ein bisschen der Ansatz wie ich die Sache angehen soll.

Ich würde mich sehr über Tipps und oder Links freuen, sodass ich mich einlesen kann.

Ps: Bitte seit nachsichtig wenn dieser Beitrag völlig falsch eingeordnet ist, habe da noch nicht so den Durchblick.

Grüße Tobi

Moderiert von Taomon:

Mal nach Containerbau schieb

Developer92 Team-Icon

Avatar von Developer92

Anmeldungsdatum:
31. Dezember 2008

Beiträge: 4101

toblex schrieb:

Ich würde mich sehr über Tipps und oder Links freuen, sodass ich mich einlesen kann.

Du musst für all deine Container, welche untereinander kommunizieren können sollen, ein eigenes Netzwerk erstellen. Das geht via docker network create (siehe auch hier).

Deine Docker Cotainer musst du bei der Erstellung mittels -net= Parameter mit dem ersellten Netzwerk verbinden.

Ein praktisches Beispiel habe ich vor einiger Zeit hier verfasst. Hoffe das hilft dir weiter ☺

BillMaier Team-Icon

Supporter

Anmeldungsdatum:
4. Dezember 2008

Beiträge: 6494

Einfacher geht das über ein docker-compose-File - da packst du alles, was du sonst via docker run machst in eine Datei und startest dann den ganzen Wust auf einmal. (sehr vereinfacht gesagt)

Wenn du dir die Definition des Netzwerks sparen willst, kannst du das über einen sog. Stack im Swarm-Mode machen. Der ist eigentlich dafür ausgelegt, dass du mehrere Hosts als Unterbau hast. Du kannst aber ganz einfach auch einen einzigen Host im swarm mode betreiben.

Klingt vielleicht erstmal sehr oversized, aber wenn du da mal drin bist, willst du das nicht mehr anders haben.

Eine sehr gute Einführung in das Prinzip gibt es hier: https://docs.docker.com/get-started/ . Alle Services innerhalb eines Swarms finden sich dann gegenseitig, indem der Service-Name im Docker-internen DNS verwendet wird.

Developer92 Team-Icon

Avatar von Developer92

Anmeldungsdatum:
31. Dezember 2008

Beiträge: 4101

BillMaier schrieb:

Einfacher geht das über ein docker-compose-File - da packst du alles, was du sonst via docker run machst in eine Datei und startest dann den ganzen Wust auf einmal. (sehr vereinfacht gesagt)

Das schöne ist, dass man alles in einer Datei hat. Wobei die Verwaltung als systemd-Service wohl etwa gleich aufwendig sein dürfte wie bei der von mir verlinkten Methode.

BillMaier Team-Icon

Supporter

Anmeldungsdatum:
4. Dezember 2008

Beiträge: 6494

Developer92 schrieb:

systemd-Service

Die von dir verlinkte Methode IST doch die systemd-Variante (?) Ich bin verwirrt.

Developer92 Team-Icon

Avatar von Developer92

Anmeldungsdatum:
31. Dezember 2008

Beiträge: 4101

BillMaier schrieb:

Die von dir verlinkte Methode IST doch die systemd-Variante (?) Ich bin verwirrt.

Das hast du falsch verstanden. Es gibt keine "systemd-Variante". Wir haben zwei Möglichkeiten besprochen, wie man mehrere Container verlinken kann via eigenem Netzwerk. Das geht entweder via:

  • docker compose

  • manuelles erstellen des Netzwerks und der Container

Systemd wird lediglich dazu gebraucht um die Container am Laufen zu halten, als Services. Und das ist soweit ich weiß bei beiden Varianten nötig.

Letztlich läuft es also darauf hinaus, was dir lieber ist. Ich selbst habe für meine Nextcloud inkl. Datenbankserver die manuelle Methode gewählt, auch wenn ich docker compose eleganter finde. Aber du willst die Container ja auch vermutlich automatisch starten lassen können, ein Log haben, etc. Und dafür brauchst du dann pro Container einen systemd-Service. Es sei denn Docker stellt noch eine andere Möglichkeit bereit, aber die kenne ich dann nicht.

BillMaier Team-Icon

Supporter

Anmeldungsdatum:
4. Dezember 2008

Beiträge: 6494

Developer92 schrieb:

Systemd wird lediglich dazu gebraucht um die Container am Laufen zu halten, als Services. Und das ist soweit ich weiß bei beiden Varianten nötig.

Nein. Darum kümmert sich die Docker-Engine: https://docs.docker.com/compose/compose-file/#restart bzw. https://docs.docker.com/compose/compose-file/#restart_policy

Im stack musst du das nicht mal angeben, weil das default ist. Das macht es ja so einfach 😉 👍

Mit docker run sollte das zwar auch funktionieren, da ist das aber nicht default: https://docs.docker.com/engine/reference/run/#restart-policies---restart (hab ich aber noch nie ausprobiert)

Lediglich die Docker-Engine (also der docker-daemon) muss im runlevel von systemd eingetragen sein.

BillMaier Team-Icon

Supporter

Anmeldungsdatum:
4. Dezember 2008

Beiträge: 6494

Ps:

Logs gibts mit

docker logs <CONTAINER>
# im swarm mode zusätzlich mit
docker service logs <SERVICE>

toblex

(Themenstarter)

Anmeldungsdatum:
27. November 2017

Beiträge: 2

Developer92 schrieb:

toblex schrieb:

Ich würde mich sehr über Tipps und oder Links freuen, sodass ich mich einlesen kann.

Du musst für all deine Container, welche untereinander kommunizieren können sollen, ein eigenes Netzwerk erstellen. Das geht via docker network create (siehe auch hier).

Deine Docker Cotainer musst du bei der Erstellung mittels -net= Parameter mit dem ersellten Netzwerk verbinden.

Ein praktisches Beispiel habe ich vor einiger Zeit hier verfasst. Hoffe das hilft dir weiter ☺

BillMaier schrieb:

Einfacher geht das über ein docker-compose-File - da packst du alles, was du sonst via docker run machst in eine Datei und startest dann den ganzen Wust auf einmal. (sehr vereinfacht gesagt)

Wenn du dir die Definition des Netzwerks sparen willst, kannst du das über einen sog. Stack im Swarm-Mode machen. Der ist eigentlich dafür ausgelegt, dass du mehrere Hosts als Unterbau hast. Du kannst aber ganz einfach auch einen einzigen Host im swarm mode betreiben.

Klingt vielleicht erstmal sehr oversized, aber wenn du da mal drin bist, willst du das nicht mehr anders haben.

Eine sehr gute Einführung in das Prinzip gibt es hier: https://docs.docker.com/get-started/ . Alle Services innerhalb eines Swarms finden sich dann gegenseitig, indem der Service-Name im Docker-internen DNS verwendet wird.

Vielen Dank euch beiden!

Habe leider erst jetzt Zeit das Material durchzulesen.

Werde mir auf jeden Fall beide Möglichkeiten anschauen.

Beste Grüße Tobi

BillMaier Team-Icon

Supporter

Anmeldungsdatum:
4. Dezember 2008

Beiträge: 6494

und, klar gekommen? Dann Thema bitte gerne auf "gelöst" setzen. Danke.

Antworten |