Ответ
Для быстрого создания множества идентичных контейнеров в среде разработки или тестирования я обычно использую Docker Compose с функцией масштабирования (scale).
Пример docker-compose.yml:
version: '3.8'
services:
worker:
image: my-app:latest
environment:
- NODE_ID={{.Task.Slot}} # Используем номер реплики
deploy:
replicas: 1 # Базовое значение, переопределяется командой scale
Запуск 10 реплик сервиса worker:
docker-compose up -d --scale worker=10
Это создаст 10 контейнеров с одним и тем же образом, но в разных сетевых неймспейсах. Для управления таким пулом в production, конечно, нужен оркестратор вроде Kubernetes, где аналогичная операция выполняется через изменение replicas в Deployment:
kubectl scale deployment/my-app --replicas=10
Важные замечания:
- Перед масштабированием убедитесь, что хост имеет достаточно ресурсов (CPU, RAM, сокеты).
- Учитывайте ограничения Docker-демона (например,
--max-concurrent-uploads). - Для одноразовых задач параллельного запуска можно использовать
xargs, но Compose или оркестраторы дают более управляемое состояние.
# Пример с xargs для запуска 5 контейнеров параллельно
seq 1 5 | xargs -n1 -P5 -I {} docker run -d --name "worker_{}" nginx:alpine