Je dois créer un grand nombre de conteneurs Docker sur différents hôtes (par exemple, 50 conteneurs chacun sur 3 hôtes). Ces conteneurs ont tous la même image, la même configuration, et seule l'adresse réseau et l'ID de chaque conteneur doivent être différents (donc, fondamentalement, je veux créer un énorme réseau de conteneurs virtuels). Y a-t-il un moyen d'y parvenir? J'ai étudié des technologies comme Helios et Kubernetes, mais elles semblent ne déployer qu'un seul conteneur sur chaque agent. J'ai pensé créer juste un tas d'emplois différents dans Helios et ensuite déployer chacun d'eux à son agent, mais cela me semble un peu sale.Création de plusieurs conteneurs Docker
Répondre
Pour la solution spécifique Docker, vous pouvez utiliser Swarm et Compose. Créez votre cluster Docker Swarm de 3 nœuds et changez votre environnement pour cet essaim. (Le ci-dessous suppose chaque hôte est à l'écoute sur 2375, ce qui est correct pour un réseau privé, mais vous voulez configurer TLS et passer à 2376 pour plus de sécurité.)
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)
Définir votre service à l'intérieur d'un docker -compose.yml, puis exécutez docker-compose scale my-service=150
. Si votre Swarm est configuré avec la stratégie de propagation par défaut, il sera réparti entre les trois hôtes en fonction du nombre de conteneurs en cours d'exécution (ou arrêtés) sur chacun d'eux.
cat >docker-compose.yml <<EOF
my-app:
image: my-app
EOF
docker-compose scale my-app=150
Notez que la baisse de docker-Compose sur les autres outils là-bas est qu'il ne corrige pas les pannes jusqu'à ce que vous réexécuter.
C'est exactement le type de cas d'utilisation pour lequel Kubernetes est bien adapté. Vous devez utiliser un Replica Set. Lors de la création de votre jeu de réplicas, vous spécifiez un modèle qui indique au système comment créer chaque instance de conteneur avec le nombre de réplicas souhaité. Il créera ensuite ce nombre de répliques dans le nombre de nœuds disponibles dans votre cluster. Un inconvénient est que par défaut, Kubernetes vous permettra seulement d'avoir ~ 100 pods/node, mais vous pouvez changer ce nombre avec un drapeau de ligne de commande si vous avez besoin de plus.
Kubernetes 1.2 permet ~ 100 pods/node par défaut, ce qui devrait être suffisant dans votre cas sans avoir besoin de changer le drapeau. –
Merci, mis à jour ma réponse. –
https://docs.docker.com/swarm/ – johnharris85