Создавайте несколько машин Docker одновременно с помощью docker-machine

В моем приложении мне нужно создать много машин Docker в службе облачных вычислений (на данный момент AWS-EC2, но ее можно изменить), а затем развернуть множество контейнеров на этих машинах. Я использую docker-machine для предоставления их на AWS с помощью такой команды, как

docker-machine create --driver amazonec2 --amazonec2-ssh-keypath <path-to-pem> <machine-name>

Проблема в том, что на создание одной такой машины уходит очень много времени, около 6 минут. Так что в целом на создание машин для моего развертывания уходят часы. Есть ли способ создать несколько машин одновременно с помощью docker-machine? Или любой способ ускорить подготовку машины? Все машины имеют одинаковую конфигурацию, просто разные экземпляры EC2 с разными именами.

Я думаю, что запуск нескольких команд docker-machine create в фоновом режиме может сработать, но я боюсь, что это может повредить конфигурацию (список компьютеров, внутренние настройки и т. д.) docker-machine. Даже если я могу безопасно запустить несколько таких команд, я не знаю, как проверить, когда и если они успешно завершены.

P.S. Насколько я понимаю, AWS поддерживает контейнеры Docker, и таким образом может быть быстрее создавать экземпляры. Но их «сервисная модель» вычислений не соответствует потребностям моего приложения.


person Truong    schedule 22.09.2016    source источник


Ответы (2)


Запуск одновременных команд docker-machine create должен быть в порядке — это зависит от драйвера, но я делаю это с помощью Azure. Драйвер Azure имеет некоторую логику для создания подсети, групп доступности и т. д. и будет повторно использовать их, если они уже есть. Предполагая, что AWS делает что-то подобное, все будет в порядке, если вы создаете первую машину и ждете ее завершения, а затем параллельно запускаете остальные.

Что касается того, чтобы знать, когда они будут готовы, было бы здорово запустить Docker Machine в Docker. контейнер. Таким образом, вы можете создать каждую машину с помощью команды docker run и использовать docker ps, чтобы посмотреть, как они работают. Предполагая, что вы хотите управлять ими с хоста, вам понадобятся ваши контейнеры для совместного использования состояния Docker Machine хоста - это должно сделать монтирование тома и установка MACHINE_STORAGE_PATH для тома на хосте.

person Elton Stoneman    schedule 22.09.2016

TLDR; Это запустит команду docker-machine 9 раз (асинхронно), чтобы создать несколько машин. Отрегулируйте по мере необходимости:

for i in `seq 1 9` ; do docker-machine create --driver virtualbox worker$i & done

Создает 9x машин...

worker1
worker2
worker3
worker4
worker5
worker6
worker7
worker8
worker9
person Nick Grealy    schedule 08.08.2021