2016-06-07 4 views
0

Мне нужно создать огромное количество контейнеров Docker на разных хостах (например, 50 контейнеров на 3 хоста). Эти контейнеры имеют одинаковое изображение, конфигурацию и т. Д., И только сетевой адрес и идентификатор каждого контейнера должны быть разными (поэтому в основном я хочу создать огромную виртуальную контейнерную сеть). Есть ли способ достичь этого?Создание нескольких контейнеров Docker

Я рассматривал такие технологии, как Helios и Kubernetes, но они, похоже, используют только один контейнер для каждого агента. Я думал о том, что просто создаю много разных заданий в Helios, а затем разворачиваю каждую из них в свой агент, но для меня это немного грязно.

+1

https://docs.docker.com/swarm/ – johnharris85

ответ

1

Для конкретного решения Docker вы можете использовать Swarm and Compose.

Создайте клан Docker Swarm из 3 узлов и измените свою среду на этот Рой. (Ниже предполагается, каждый хост прослушивает 2375, что хорошо для частной сети, но вы хотите, настройки TLS и перейти на 2376 для большей безопасности.)

cat >cluster.txt <<EOF 
node1:2375 
node2:2375 
node3:2375 
EOF 
docker run -d -P --restart=always --name swarm-manager \ 
    -v ./cluster.txt:/cluster.txt \ 
    swarm manage file:///cluster.txt 
export DOCKER_HOST=$(docker port swarm-manager 2375) 

Определите службу внутри грузчика -compose.yml, а затем запустите docker-compose scale my-service=150. Если ваш Swarm настроен со стратегией распространения по умолчанию, он будет распространять их по 3 хостам на основе количества контейнеров, работающих (или остановленных) на каждом из них.

cat >docker-compose.yml <<EOF 
my-app: 
    image: my-app 
EOF 
docker-compose scale my-app=150 

Обратите внимание, что обратная сторона докер-компоновать над другими инструментами там, что это не правильно для отключений, пока вы не запустите его.

2

Это точно такой вариант использования, в котором Kubernetes хорошо подходит.

Вы должны использовать Replica Set. При создании набора реплик вы указываете шаблон, который сообщает системе, как создать экземпляр каждого контейнера вместе с желаемым количеством реплик. Затем он создаст это количество реплик в доступном количестве узлов в вашем кластере.

Одно из предостережений заключается в том, что Kubernetes по умолчанию позволяет вам иметь ~ 100 pods/node, но вы можете изменить это число с помощью флага командной строки, если вам нужно больше.

+0

Kubernetes 1.2 позволяет ~ 100 контейнеров/узлов по умолчанию, которых должно быть достаточно в вашем случае без необходимости менять флаг. –

+0

Спасибо, обновил мой ответ. –

Смежные вопросы