Wie kann ich Docker verwenden, um Clients Zugriff auf mehrere Anwendungen zu gewähren, die auf einem Server ausgeführt werden?

Wie kann ich Docker verwenden, um Clients Zugriff auf mehrere Anwendungen zu gewähren, die auf einem Server ausgeführt werden?

Nehmen wir an, ich habe einen sehr schnellen Server mit 200 GB RAM. Ich möchte grundsätzlich eine Anwendung wie rserver hosten, die über eine Weboberfläche läuft.

Ich möchte jede Anwendung in einen Container mit einer festgelegten Anzahl an zugewiesenen CPUs und RAMs packen. Jeder Container wäre für jeden meiner Studenten.

Wie kann ich jedem Studenten eine zu verwendende HTTP-Adresse zuweisen, ohne für jeden Studenten einen Port fest zu codieren?

Antwort1

Für die Zuweisung von CPU und RAM stehen Ihnen docker runbeim Erstellen Ihrer Container (siehe docker help run) Optionen wie --cpuset-cpus=oder zur Verfügung --memory=.

Für jeden Studenten mit einer anderen HTTP-Adresse ist das nicht ganz einfach. Was wir für eine VM gemacht haben, die 8 Jenkins-Masterdienste hostet, die jeweils in Containern laufen und jeweils auf den Port 8080 (im Container) hören, der als 808x verfügbar ist, ist, einen Apache-Dispatcher (oder nginx) zu konfigurieren, der nur auf 443 hört und für jeweils 8 DNS-Namen an einen anderen Container sendet. Sehen Sie sich das System hier an:http://www.slideshare.net/cm13/scaling-your-jenkins-master-with-docker/16

Um ein solches System einzurichten, benötigen Sie Zugriff auf eine DNS-Serverkonfiguration, um für jeden Studenten einen neuen Namen zu erstellen. Außerdem müssen Sie die Erstellung der Apache-Vhost-Konfigurationen automatisieren (was nicht sehr schwierig ist). Dann muss jeder Student zuhttps://seinName/wodurch die Anwendung gestartet wird.

Ich würde wirklich empfehlen, auch die Erstellung von Containern mit docker-composeoder ohne andere Technologie zu automatisieren.

verwandte Informationen