Comment mettre à l'échelle des conteneurs Docker en production

139

J'ai donc récemment découvert cet outil génial, et il dit

Docker est un projet open source permettant de créer facilement des conteneurs légers, portables et autonomes à partir de n'importe quelle application. Le même conteneur qu'un développeur construit et teste sur un ordinateur portable peut s'exécuter à grande échelle, en production, sur des machines virtuelles, du bare metal, des clusters OpenStack, des clouds publics, etc.

Disons que j'ai une image docker qui exécute Nginx et qu'un site Web se connecte à une base de données externe. Comment mettre à l'échelle le conteneur en production?

James Lin
la source

Réponses:

587

Mise à jour: 2019-03-11

Tout d'abord merci pour 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 toute nouvelle technologie. Depuis lors: Kubernetes a été lancé en juin 2014, Docker swarm a été intégré au 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 changé considérablement.


La réponse courte est que vous devez écrire votre propre logique pour ce faire.

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

Mise à jour 1

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

Mise à jour 2

La dernière version d'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 pour fournir un modèle d'infrastructure de serveur immuable

Mise à jour 4

Un article soigné sur la façon de câbler des conteneurs Docker à l'aide de serf :

Mise à jour 5

Exécutez Docker sur Mesos à l'aide du framework Marathon

Tutoriel du développeur Docker Mesosphere

Mise à jour 6

Exécutez Docker sur Tsuru car il prend en charge le déploiement de docker-cluster et de planificateur séparé

Mise à jour 7

Orchestration d'environnements basés sur Docker

maestro-ng

Mise à jour 8

decking.io

Mise à jour 9

Google kubernetes

Mise à jour 10

Redhat a remanié son PAAS OpenShift 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 du cluster.

Mise à jour 13

Strictement parlant, Flocker ne «met pas à l'échelle» les applications, mais il est conçu pour remplir une fonction connexe de rendre les conteneurs avec état (exécutant des 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 qui décrivent les applications Docker:

http://panamax.io/

Mise à jour 15

Le projet Docker aborde désormais 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 "container as a service" appelé Magnum:

Montre beaucoup de promesses, permet la configuration facile des frameworks d'orchestration Docker comme 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 hyrbrid 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 plate-forme open source et auto-hébergée pour la gestion d'architectures orientées (micro) services qui reposent sur la technologie des conteneurs.

http://vamp.io/

Mise à jour 23

Un planificateur distribué, hautement disponible et compatible avec les centres de données

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

Mise à jour 24

Solution d'hébergement de conteneurs 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é Docker cloud

https://cloud.docker.com/

Mise à jour 26

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

Mark O'Connor
la source
1
openstack est un autre candidat pour cette liste
ben schwartz
@benschwartz Très vrai, mais uniquement dans la dernière version.
Mark O'Connor
Wow, Dock - moi - vous Rockin Fock! Merci!
jredd
2
@ MarkO'Connor Le mesosphere/mesos-dockerprojet a été abandonné et remplacé par mesosphere/deimos: github.com/mesosphere/deimos
Ross Allen
1
Il vaut également la peine de regarder, de Google - github.com/GoogleCloudPlatform/kubernetes
mjsalinger
42

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. Accédez simplement à l'URL du proxy ou utilisez deis openpour accéder à 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 à http://deis.io/overview/ . Vous pouvez également en apprendre davantage sur les concepts Deis ou vous lancer directement dans le déploiement de votre propre PaaS privé .

gabrtv
la source
3
+1 Je regarde votre projet avec intérêt. Continuez votre bon travail!
Mark O'Connor
19

Vous pouvez essayer Tsuru. Tsuru est un PaaS open source inspiré de Heroku, et il est déjà avec certains produits en production sur Globo.com (bras internet de la plus grande société de radiodiffusion au Brésil)

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

Jetez un œil 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/

Magno Torres
la source
18

Jetez un œil à Rancher.com - il peut gérer plusieurs hôtes Docker et bien plus encore.

dublx
la source
Rancher est open source et inclut une distribution complète de Kubernetes. Il fournit une plate-forme pour exécuter de nombreux clusters différents, gérer l'infrastructure et simplifier considérablement l'exécution des conteneurs.
Shannon Williams
9

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

  1. Chaque service sera un conteneur docker
  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 Dokku
  4. Les applications seront gérées par Shipyard qui à son tour utilise hipache

Un autre projet open source docker de Yandex:

tommasop
la source
Pouvez-vous donner plus de conseils sur la façon d'utiliser Dokku aux côtés de Shipyard?
djskinner
2

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

Kunthar
la source
2

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

Débardeur 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 OpenSource Centurion de NewRelic semble assez prometteur:

https://github.com/newrelic/centurion

IanBlenke
la source
1

Jetez également un œil à etcd et Consul .

Ricardo Silva
la source
1

Panamax: Gestion Docker pour les humains. panamax.io

Fig: Environnements de développement rapides et isolés utilisant Docker. fig.sh

rus1
la source
Je pense que Fig ne prend pas encore en charge le déploiement multi-hôte.
lolski
Est-ce vrai! Donc, cela aide simplement à orchestrer la configuration des applications à l'intérieur d'un seul hôte?
fatuhoku
1

Une option non mentionnée dans d'autres articles est Helios. Il est construit par spotify et n'essaie pas d'en faire trop.

https://github.com/spotify/helios

Chris Dail
la source