web-dev-qa-db-fra.com

Comment redimensionner les conteneurs Docker en production

Alors j'ai récemment découvert cet outil génial, et il dit

Docker est un projet à source ouverte permettant de créer facilement des conteneurs légers, portables et autonomes à partir de toute application. Le même conteneur qu'un développeur construit et teste sur un ordinateur portable peut être utilisé à grande échelle, en production, sur des ordinateurs virtuels, des clusters nus, des clusters OpenStack, des clouds publics, etc.

Disons que j'ai une image de menu fixe qui exécute Nginx et qu'un site Web se connecte à une base de données externe. Comment puis-je redimensionner le conteneur en production?

139
James Lin

Mise à jour: 2019-03-11

Tout d’abord, merci à ceux qui ont voté pour cette réponse au fil des ans.

Veuillez noter que cette question a été posée en août 2013, alors que Docker était encore une technologie très nouvelle. Depuis lors: Kubernetes a été lancé en juin 2014, l'essaim Docker a été intégré Dans le moteur Docker en février 2015, Amazon a lancé sa solution de conteneur , ECS, en avril 2015 et Google a lancé GKE. en août 2015. Il est juste de dire que le paysage des conteneurs de production a considérablement changé.


La réponse courte est que vous auriez à écrire votre propre logique pour faire cela.

Je m'attendrais à ce que ce type de fonctionnalité découle des projets suivants, construits sur le docker et conçus pour prendre en charge des applications en production:

Mise à jour 1

Un autre projet connexe que j'ai découvert récemment:

Mise à jour 2

La dernière version Openstack prend en charge la gestion des conteneurs Docker:

Mise à jour 3

Système de gestion des instances Docker

Et une présentation sur la façon d'utiliser des outils tels que Packer , Docker et Serf fournir un modèle d'infrastructure de serveur immuable

Mise à jour 4

Un article soigné sur la manière de câbler ensemble des conteneurs de menu fixe en utilisant serf :

Mise à jour 5

Exécuter Docker sur Mesos en utilisant le cadre Marathon

Didacticiel du développeur Docker Mesosphere

Mise à jour 6

Exécuter Docker sur Tsuru car il prend en charge docker-cluster et déploiement du planificateur séparé

Mise à jour 7

Orchestration des environnements basés sur Docker

maestro-ng

Mise à jour 8

decking.io

Mise à jour 9

Google kubernetes

Mise à jour 10

Redhat a restructuré son PAAS en open-shift pour intégrer Docker

Mise à jour 11

Une bibliothèque Docker NodeJS encapsulant la ligne de commande Docker et la gérant à partir d’un fichier json.

Mise à jour 12

Le nouveau service de conteneur d'Amazon permet la mise à l'échelle dans le cluster.

Mise à jour 13

À proprement parler , Flocker ne "redimensionne" pas les applications, mais il est conçu pour remplir une fonction connexe consistant à rendre les conteneurs avec état (services de bases de données?) Portables sur plusieurs hôtes docker:

https://clusterhq.com/

Mise à jour 14

Un projet pour créer des modèles portables décrivant les applications Docker:

http://panamax.io/

Mise à jour 15

Le projet Docker s’adresse maintenant à l’orchestration de manière native (voir l’annonce )

Mise à jour 16

Spotify Helios

Voir également:

Mise à jour 17

Le projet Openstack a maintenant un nouveau projet "conteneur en tant que service" appelé Magnum:

Très prometteur, il permet de configurer facilement les infrastructures d’orchestration Docker telles que Kubernetes et Docker swarm.

Mise à jour 18

Rancher est un projet qui mûrit rapidement

http://rancher.com/

Belle interface utilisateur et forte concentration sur les infrastructures hybrides de Docker

Mise à jour 19

Le projet Lattice est une émanation de Cloud Foundry pour la gestion des clusters de conteneurs.

Mise à jour 20

Docker a récemment acheté Tutum:

https://www.docker.com/tutum

Mise à jour 21

Gestionnaire de packages pour les applications déployées sur Kubernetes .

http://helm.sh/

Mise à jour 22

Vamp est une plateforme open source et auto-hébergée pour la gestion d'architectures (micro) orientées services qui reposent sur la technologie de conteneur.

http://vamp.io/

Mise à jour 23

Un planificateur distribué, hautement disponible et axé sur le datacenter

Parmi les gars qui nous ont donné Vagrant et d'autres outils puissants.

Mise à jour 24

Solution d'hébergement de conteneur pour AWS, open source et basée sur Kubernetes

https://supergiant.io/

Mise à jour 25

Conteneur basé sur Apache Mesos hébergé en Allemagne

https://sloppy.io/features/#features

Et Docker Inc. fournit également un service d'hébergement de conteneurs appelé cloud Docker.

https://cloud.docker.com/

Mise à jour 26

Jelastic est un service PAAS hébergé qui met à l'échelle les conteneurs automatiquement.

574
Mark O'Connor

Deis automatise la mise à l'échelle des conteneurs Docker (entre autres).

Deis (prononcé DAY-iss) est un PaaS open source qui facilite le déploiement et la gestion des applications sur vos propres serveurs. Deis s'appuie sur Docker et CoreOS pour fournir un PaaS léger avec un flux de travail inspiré de Heroku.

Voici le flux de travail du développeur:

deis create myapp                      # create a new deis app called "myapp"
git Push deis master                   # built with a buildpack or dockerfile
deis scale web=16 worker=4             # scale up docker containers

Deis déploie automatiquement vos conteneurs Docker sur un cluster CoreOS et configure les routeurs Nginx pour acheminer les demandes vers des conteneurs Docker sains. Si un hôte meurt, les conteneurs sont automatiquement redémarrés sur un autre hôte en quelques secondes. Il vous suffit de naviguer vers l'URL du proxy ou d'utiliser deis open pour lancer votre application.

Quelques autres commandes utiles:

deis config:set DATABASE_URL=          # attach to a database w/ an envvar
deis run make test                     # run ephemeral containers for one-off tasks
deis logs                              # get aggregated logs for troubleshooting
deis rollback v23                      # rollback to a prior release

Pour voir cela en action, regardez la vidéo du terminal à l’adresse http://deis.io/overview/ . Vous pouvez également en savoir plus sur les concepts de Deis ou passer directement à déployer votre propre PaaS privé .

42
gabrtv

Vous pouvez essayer Tsuru. Tsuru est un PaaS open source inspiré de Heroku, et certains de ses produits sont déjà en production sur Globo.com (branche Internet de la plus grande société de télévision de télévision au Brésil).

Il gère l'intégralité du flux d'une application, depuis la création du conteneur, le déploiement, le routage (avec hipache) avec de nombreuses fonctionnalités Nice comme le docker cluster, la mise à l'échelle des unités, le déploiement séparé, etc.

Jetez un oeil dans notre documentation ci-dessous: http://docs.tsuru.io/

Voici notre article sur notre environnement: http://blog.tsuru.io/2014/04/04/running-tsuru-in-production-scaling-and-segregating-docker-containers/

19
Magno Torres

Regardez Rancher.com - il peut gérer plusieurs hôtes Docker et bien plus encore.

18
dublx

Une approche judicieuse de la mise à l'échelle de Docker pourrait être:

  1. Chaque service sera un docker conteneur
  2. Découverte de service intra-conteneur gérée via des liens ( nouvelle fonctionnalité de docker 0.6.5 )
  3. Les conteneurs seront déployés via Dokk
  4. Les applications seront gérées via Chantier naval qui utilise à son tour hipache

Un autre projet open source de docker de Yandex:

9
tommasop

Les gars Openshift ont également créé un projet. Vous pouvez trouver plus d'informations ici , essayez conteneur de test et informations détaillées ici . Le seul problème est que la solution est centrée sur Redhat pour le moment :)

2
Kunthar

Alors que nous sommes de grands fans de Deis (deis.io) et que nous y déployons activement, il existe d'autres solutions de déploiement de style Heroku comme PaaS, notamment:

Les bûcherons des gens de Wayfinder:

https://github.com/longshoreman/longshoreman

Decker des gens de CloudCredo, utilisant CloudFoundry:

http://www.cloudcredo.com/decker-docker-cloud-foundry/

En ce qui concerne l’orchestration directe, le projet Open Source Centurion de NewRelic semble très prometteur:

https://github.com/newrelic/centurion

2
IanBlenke

Panamax: Gestion des dockers pour les humains. panamax.io

Figue: Environnements de développement rapides et isolés avec Docker. fig.sh

1
rus1

Jetez également un œil à etc et Consul .

1
Ricardo Silva

Une option non mentionnée dans d'autres publications est Helios. Il est construit par Spotify et n'essaie pas de faire trop.

https://github.com/spotify/helios

1
Chris Dail