Come ridimensionare i container Docker in produzione


139

Quindi di recente ho scoperto questo fantastico strumento, e dice

Docker è un progetto open source per creare facilmente contenitori leggeri, portatili e autosufficienti da qualsiasi applicazione. Lo stesso contenitore che uno sviluppatore costruisce e testa su un laptop può essere eseguito su larga scala, in produzione, su macchine virtuali, bare metal, cluster OpenStack, cloud pubblici e altro ancora.

Diciamo che ho un'immagine docker che esegue Nginx e un sito Web si collega a un database esterno. Come scalare il contenitore in produzione?

Risposte:


587

Aggiornamento: 11-03-2019

Innanzitutto grazie per coloro che hanno votato questa risposta nel corso degli anni.

Si noti che questa domanda è stata posta nell'agosto 2013, quando Docker era ancora una tecnologia molto nuova. Da allora: Kubernetes è stato lanciato a giugno 2014, lo sciame Docker è stato integrato nel motore Docker a febbraio 2015, Amazon ha lanciato la sua soluzione container, ECS, ad aprile 2015 e Google ha lanciato GKE ad agosto 2015. È giusto dire che il panorama dei container di produzione ha cambiato sostanzialmente.


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

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

Aggiornamento 1

Un altro progetto correlato che ho scoperto di recente:

Aggiornamento 2

La versione più recente di Openstack contiene il supporto per la gestione dei contenitori Docker:

Aggiornamento 3

Sistema per la gestione delle istanze Docker

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

Aggiornamento 4

Un articolo accurato su come collegare i container docker usando servo :

Aggiornamento 5

Esegui Docker su Mesos usando il framework Marathon

Mesosphere Docker Developer Tutorial

Aggiornamento 6

Esegui Docker su Tsuru poiché supporta la distribuzione docker-cluster e scheduler segregato

Aggiornamento 7

Orchestrazione di ambienti basati su docker

Maestro-ng

Aggiornamento 8

decking.io

Aggiornamento 9

Google Kubernetes

Aggiornamento 10

I Redhat hanno refactored il loro PAAS openshift per integrare Docker

Aggiornamento 11

Una libreria Docker NodeJS che avvolge la riga di comando Docker e la gestisce da un file json.

Aggiornamento 12

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

Aggiornamento 13

A rigor di termini Flocker non "ridimensiona" le applicazioni, ma è progettato per filtrare una funzione correlata di rendere portabili i contenitori con stato (esecuzione di servizi di database?) Su più host 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 l' annuncio )

Aggiornamento 16

Spotify Helios

Guarda anche:

Aggiornamento 17

Il progetto Openstack ora ha un nuovo progetto "container as a service" chiamato Magnum:

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

Aggiornamento 18

Rancher è un progetto che sta maturando rapidamente

http://rancher.com/

Bella interfaccia utente e forte attenzione alle infrastrutture Docker hyrbrid

Aggiornamento 19

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

Aggiornamento 20

Docker ha recentemente acquistato Tutum:

https://www.docker.com/tutum

Aggiornamento 21

Gestione pacchetti per applicazioni distribuite su Kubernetes .

http://helm.sh/

Aggiornamento 22

Vamp è una piattaforma open source e self-hosted per la gestione di architetture (micro) orientate al servizio che si basano sulla tecnologia container.

http://vamp.io/

Aggiornamento 23

Un pianificatore distribuito, altamente disponibile e compatibile con il 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 situato in Germania

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

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

https://cloud.docker.com/

Aggiornamento 26

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


1
openstack è un altro candidato per questa lista
ben schwartz,

@benschwartz Molto vero, ma solo nell'ultima versione.
Mark O'Connor il

Wow, Dock, io, tu Rockin Fock! Grazie!
jredd

2
@ MarkO'Connor Il mesosphere/mesos-dockerprogetto è stato deprecato e sostituito da mesosphere/deimos: github.com/mesosphere/deimos
Ross Allen

1
Vale anche la pena dare
un'occhiata

42

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

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

Ecco il flusso di lavoro degli sviluppatori:

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 integri. Se un host muore, i contenitori vengono automaticamente riavviati su un altro host in pochi secondi. Basta accedere all'URL del proxy o utilizzare deis openper 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 vederlo in azione, guarda il video del terminale su http://deis.io/overview/ . Puoi anche conoscere i concetti di Deis o iniziare subito a implementare il tuo PaaS privato .


3
+1 Sto guardando il tuo progetto con interesse. Continua così!
Mark O'Connor,

19

Puoi provare Tsuru. Tsuru è un PaaS open source ispirato a Heroku, ed è già con alcuni prodotti in produzione su Globo.com (braccio di Internet della più grande società di radiodiffusione in Brasile)

Gestisce l'intero flusso di un'applicazione, dal momento che la creazione, la distribuzione, il routing del contenitore (con hipache) con molte belle funzioni come cluster docker, ridimensionamento delle unità, distribuzione segregata, ecc.

Dai un'occhiata alla nostra documentazione qui sotto: http://docs.tsuru.io/

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


18

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


Rancher è open source e include una distribuzione completa di Kubernetes. Fornisce una piattaforma per l'esecuzione di molti cluster diversi, la gestione dell'infrastruttura e semplifica notevolmente l'esecuzione di container.
Shannon Williams,

9

Un approccio ragionevole al ridimensionamento di Docker potrebbe essere:

  1. Ogni servizio sarà un contenitore docker
  2. Rilevamento del servizio container Intra gestito tramite collegamenti ( nuova funzionalità dalla finestra mobile 0.6.5 )
  3. I container saranno distribuiti attraverso Dokku
  4. Le applicazioni saranno gestite attraverso il cantiere navale che a sua volta utilizza hipache

Un altro progetto open source docker di Yandex:


Potete fornire ulteriori consigli su come utilizzare Dokku insieme a Shipyard?
djskinner,


2

I ragazzi di Openshift hanno anche creato un progetto. Puoi trovare maggiori informazioni qui , provare il contenitore di test e informazioni dettagliate qui . L'unico problema è che per ora la soluzione è centrata su Redhat :)


2

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

Longshoreman della gente 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 opensource di NewRelic sembra abbastanza promettente:

https://github.com/newrelic/centurion



1

Panamax: Docker Management for Humans. panamax.io

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


Penso che Fig non supporti ancora la distribuzione multi-host.
Lolski,

È così! Quindi aiuta solo a orchestrare la configurazione di applicazioni all'interno di un singolo host?
Fatuhoku,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.