Как использовать Docker, чтобы предоставить клиентам доступ к нескольким приложениям, работающим на одном сервере?

Как использовать Docker, чтобы предоставить клиентам доступ к нескольким приложениям, работающим на одном сервере?

Допустим, у меня есть сервер с 200 гигами оперативной памяти и очень быстрый. Я в основном хочу разместить приложение типа rserver, которое работает через веб-интерфейс.

Я хотел бы поместить каждое приложение в контейнер с заданным количеством выделенных процессоров и оперативной памяти. Каждый контейнер будет для каждого студента, который у меня есть.

Как мне предоставить каждому студенту http-адрес для использования, не привязывая каждого студента к порту?

решение1

Для выделения процессора и оперативной памяти у вас есть параметры docker runпри создании контейнеров (см. docker help run), например --cpuset-cpus=или --memory=.

Для каждого студента, имеющего свой http-адрес, это будет не так просто. То, что мы сделали для VM, размещающей 8 основных служб jenkins, каждая из которых работает в контейнерах и каждая слушает порт 8080 (в контейнере), выставленный как 808x, заключается в настройке диспетчера Apache (или nginx), слушающего только 443 и для каждого из 8 DNS-имен, отправляющего запросы в другой контейнер. Смотрите систему здесь:http://www.slideshare.net/cm13/scaling-your-jenkins-master-with-docker/16

Для настройки такой системы вам понадобится доступ к конфигурации DNS-сервера, чтобы создать новое имя для каждого студента. И вам также понадобится автоматизировать создание конфигураций Apache vhost (что не очень сложно). Затем каждый студент с go tohttps://имя_имени_его_имени/который запустит приложение.

Я бы очень посоветовал также автоматизировать создание контейнеров с помощью docker-composeили другой технологии.

Связанный контент