Come ridimensionare i contenitori Docker in produzione

Così ho scoperto di recente questo fantastico strumento, e dice

Docker è un progetto open-source per creare facilmente container leggeri, portatili e autosufficienti da qualsiasi applicazione. Lo stesso contenitore sviluppato e testato da uno sviluppatore su un laptop può essere eseguito su scala, in produzione, su VM, bare metal, cluster OpenStack, cloud pubblici e altro ancora.

Diciamo che ho un’immagine docker che esegue Nginx e un sito Web si collega al database esterno. Come si ridimensiona il contenitore in produzione?

La risposta breve è che dovresti scrivere la tua logica per farlo.

Mi aspetto che questo tipo di funzionalità emerga dai seguenti progetti, costruiti sulla parte superiore della finestra mobile e progettati per supportare le applicazioni in produzione:

  • Flynn
  • DEIS
  • CoreOS
  • Mesos

Aggiornamento 1

Un altro progetto correlato che ho scoperto di recente:

  • maestro

Aggiornamento 2

L’ultima versione di Openstack contiene il supporto per la gestione dei contenitori Docker:

  • Docker Openstack
  • Zona Paas all’interno di OpenStack

Aggiornamento 3

Sistema per la gestione delle istanze di Docker

  • cantiere navale

E una presentazione su come utilizzare strumenti come Packer , Docker e Serf per fornire un modello di infrastruttura server immutabile

  • FutureOps con infrastruttura immutabile
  • Slides

Aggiornamento 4

Un articolo accurato su come colbind insieme i contenitori docker usando il servo della gleba :

  • Decentralizing Docker: come usare servo con Docker

Aggiornamento 5

Esegui Docker su Mesos utilizzando il framework Marathon

Esercitazione per sviluppatori di Mesosphere Docker

Aggiornamento 6

Esegui Docker su Tsuru in quanto supporta la distribuzione di scheduler docker e segregata

Aggiornamento 7

Orchestrazione degli ambienti basata su Docker

Maestro-ng

Aggiornamento 8

decking.io

Aggiornamento 9

Google kubernetes

Aggiornamento 10

Redhat ha refactored il loro PAAS openshift per integrare Docker

  • Progetto atomico
  • Geard

Aggiornamento 11

Una libreria Docker NodeJS lib avvolge la riga di comando di Docker e la gestisce da un file JSON.

  • finestra mobile-cmd

Aggiornamento 12

Il nuovo servizio contenitore di Amazon consente il ridimensionamento nel cluster.

Aggiornamento 13

Strettamente parlando, Flocker non “scala” le applicazioni, ma è progettato per implementare una funzione correlata di rendere contenitori statici (servizi di database in esecuzione?) Su più host di docker:

https://clusterhq.com/

Aggiornamento 14

Un progetto per creare modelli portatili che descrivono le applicazioni Docker:

http://panamax.io/

Aggiornamento 15

Il progetto Docker ora sta affrontando l’orchestrazione in modo nativo (Vedi annuncio )

  • Docker machine
  • Sciame Docker
  • Docker comporre

Aggiornamento 16

Spotify Helios

Guarda anche:

Aggiornamento 17

Il progetto Openstack ora ha un nuovo progetto “contenitore come servizio” chiamato Magnum:

Mostra molte promesse, consente la facile configurazione di framework di orchestrazione Docker come Kubernetes e Docker.

Aggiornamento 18

Rancher è un progetto che sta maturando rapidamente

http://rancher.com/

Interfaccia utente piacevole e forte attenzione alle infrastrutture di Docker hyrbrid

Aggiornamento 19

Il progetto Lattice è una propaggine di Cloud Foundry per la gestione dei cluster di container.

Aggiornamento 20

Docker ha recentemente acquistato Tutum:

https://www.docker.com/tutum

Aggiornamento 21

Gestore pacchetti per applicazioni distribuite su Kubernetes .

http://helm.sh/

Aggiornamento 22

Vamp è una piattaforma open source e self-hosted per la gestione di architetture orientate ai servizi (micro) basate sulla tecnologia dei container.

http://vamp.io/

Aggiornamento 23

Un programmatore distribuito, altamente disponibile, datacenter

Dai ragazzi che ci hanno dato Vagrant e altri potenti strumenti.

Aggiornamento 24

Soluzione di hosting container per AWS, open source e basata su Kubernetes

https://supergiant.io/

Aggiornamento 25

Contenitore basato su Apache Mesos ospitato in Germania

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

E Docker Inc. fornisce anche un servizio di hosting di container chiamato Docker cloud

https://cloud.docker.com/

Aggiornamento 26

Jelastic è un servizio PAAS ospitato che ridimensiona automaticamente i contenitori.

Deis automatizza il ridimensionamento dei container Docker (tra le altre cose).

Deis (pronunciato DAY-iss) è un PaaS open source che semplifica la distribuzione e la gestione delle applicazioni sui propri server. Deis si basa su Docker e CoreOS per fornire un PaaS leggero con un stream di lavoro ispirato a Heroku.

Ecco il stream di lavoro dello sviluppatore:

 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 distribuisce automaticamente i contenitori Docker in un cluster CoreOS e configura i router Nginx per instradare le richieste a contenitori Docker sani. Se un host muore, i contenitori vengono riavviati automaticamente su un altro host in pochi secondi. Basta sfogliare l’URL del proxy o usare deis open per colpire la tua app.

Alcuni altri comandi utili:

 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 

Per vedere questo in azione, controlla il video del terminale su http://deis.io/overview/ . Puoi anche imparare a conoscere i concetti di Deis o passare direttamente all’installazione del tuo PaaS privato .

Dai un’occhiata a Rancher.com : può gestire più host Docker e molto altro.

Puoi provare Tsuru. Tsuru è un opensource PaaS ispirato a Heroku, ed è già con alcuni prodotti in produzione a Globo.com (arm di Internet della più grande compagnia televisiva in Brasile)

Gestisce l’intero stream di un’applicazione, dal momento che la creazione, l’implementazione e il routing del contenitore (con hipache) con molte funzioni utili come cluster docker, ridimensionamento delle unità, distribuzione separata, ecc.

Dai uno sguardo alla nostra documentazione qui sotto: http://docs.tsuru.io/

Qui il nostro post copre il nostro ambiente: http://blog.tsuru.io/2014/04/04/running-tsuru-in-production-scaling-and-segregating-docker-containers/

Un approccio ragionevole al ridimensionamento di Docker potrebbe essere:

  1. Ogni servizio sarà un contenitore docker
  2. Scoperta del servizio Intra Container gestita tramite collegamenti ( nuova funzionalità dalla finestra mobile 0.6.5 )
  3. I contenitori verranno distribuiti tramite Dokku
  4. Le applicazioni saranno gestite tramite Cantiere che a sua volta utilizza l’ hipache

Un altro progetto di open source open source da Yandex:

  • cocaina

Anche i ragazzi di Openshift hanno creato un progetto. Puoi trovare maggiori informazioni qui , prova contenitore di test e informazioni dettagliate qui . L’unico problema è la soluzione Redhat centrica per ora 🙂

Mentre siamo grandi fan di Deis (deis.io) e ci stiamo triggersmente schierando, ci sono altre soluzioni di distribuzione in stile PaaS come Heroku, tra cui:

Scaricatore di porto dalla gente di Wayfinder:

https://github.com/longshoreman/longshoreman

Decker della gente di CloudCredo, usando CloudFoundry:

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

Per quanto riguarda l’orchestrazione diretta, il progetto Centurion di NewRelic per l’opensource sembra abbastanza promettente:

https://github.com/newrelic/centurion

Dai un’occhiata anche a etcd e Consul .

Panamax: Docker Management per gli umani. panamax.io

Fig: ambienti di sviluppo veloci e isolati che utilizzano Docker. fig.sh

Un’opzione non menzionata in altri post è Helios. È costruito da spotify e non tenta di fare troppo.

https://github.com/spotify/helios