2013-08-06 18 views
23

Sono un noob totale di contenitori Linux e ho trascorso un po 'di tempo a studiare su Docker e perdono la mia confusione pensavo a questa domanda. Attualmente, ho un'app Rails in produzione distribuita tramite capistrano. I miei server cloud sono gestiti con Opscode Chef nella distribuzione Debian Wheezy. Per lo sviluppo, ho una VM di Vagrant preinstallata con l'app e i servizi.Esecuzione e distribuzione di Rails a contenitore Docker

Se dovessi utilizzare Docker, dove si posizionerebbe la mia app? Il contenitore o l'host? Come posso distribuire (produzione) e condividere directory (sviluppo)? Posso eseguire tutti i miei servizi aggiuntivi, ad esempio memcache, redis, postgresql, ecc sullo stesso server utilizzando la finestra mobile? Posso forse immaginare il potenziale di Docker, ma ho difficoltà a vedere il suo uso pratico.

Sembra che i container facciano parte del futuro. Qualche consiglio per qualcuno che passa dalla virtualizzazione?

risposta

11

Se dovessi utilizzare Docker, dove si posizionerebbe la mia app?

Potrebbe sedersi all'interno del contenitore o potrebbe sedersi sulla macchina (è possibile utilizzare finestra mobile build per copiare l'applicazione nel contenitore)

Come potrei schierare (produzione) e condividere le directory (sviluppo)?

Distribuzione vostra applicazione significherebbe commettere il vostro contenitore locale in un'immagine, pubblicandolo e l'esecuzione di un contenitore fuori le immagini pubblicate sui server. Non ho provato a condividere le directory tra host e container, ma puoi provare questo: https://gist.github.com/jpetazzo/5668338. Puoi anche scrivere un Dockerfile che può copiare una directory in una destinazione nel container. Docker's docs on building images ti aiuterà lì.

Posso eseguire tutti i miei servizi aggiuntivi, ad esempio memcache, redis, postgresql, ecc sullo stesso server tramite la finestra mobile?

Sì. Verranno eseguiti più contenitori sullo stesso server.

+1

Cheer, @Emil. Grande risposta. –

+0

Questi servizi aggiuntivi possono trovarsi all'interno del proprio contenitore di finestre di dialogo o possono essere tutti all'interno di un contenitore di finestra mobile? – CMCDragonkai

+0

@CMCDragonkai La pratica suggerita sarebbe quella di eseguire ogni servizio nel proprio contenitore, in modo che siano modulari: utilizzare l'immagine memcached per eseguire contenitori per più app, eseguire 3 istanze del contenitore dell'app Web per bilanciare il carico tra di loro (con un contenitore haproxy!). Vedi [il documento di collegamento] (http://docs.docker.io/en/latest/use/working_with_links_names/) per aiutare i contenitori a trovarsi l'un l'altro.Potrebbe piacerti anche [Fig] (http://orchardup.github.io/fig/index.html) per eseguirli. Si noti il ​​comando 'scala in scala' per più istanze. – ches

2

Non sono esperto e non ho nemmeno utilizzato la finestra mobile, ma a quanto ho capito, la tua app si trova all'interno di un container. Si dovrebbe distribuire idealmente un intero contenitore con la propria versione di rubino installata e così via.

Il grande vantaggio è che è possibile testare esattamente lo stesso contenitore nel sistema di staging che verrà spedito alla produzione. Quindi puoi testare il sistema completo con tutte le estensioni C installate, esattamente lo stesso comando ls e così via.

+0

Ciò significa che sostituisce Capistrano? – ardochhigh

+0

non necessariamente. è possibile utilizzare capistrano per la distribuzione in un contenitore docker. capistrano mette il tuo codice da qualche parte. docker mette la tua macchina da qualche parte. – udo

+0

Grazie per la risposta. Ho fatto ancora un po 'di lettura, e Docker sembra davvero eccellente. Tuttavia non è ancora pronto ... quindi lo terrò d'occhio. – ardochhigh

Problemi correlati