Допустим, у меня есть сервер с 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
или другой технологии.