2014-12-04 17 views
5

Come dice il titolo, mezzi sicuri ... nel modo giusto?È "sicuro" eseguire il commit di un container in esecuzione nella finestra mobile?

Sicuro = coerente, nessuna perdita di dati, modo professionale e legittimo.

Spero di condividere alcune esperienze con gli utenti di docker professionisti.

D. Commit è sicuro per l'esecuzione di contenitori docker (con l'eccezione di rapida evoluzione roba in tempo reale e roba del database, il vostro commento è apprezzato.)

Sì o No risposta è stata accettata con un commento. Grazie.

+1

Forse questa risposta ho fatto ad una precedente domanda simile può aiutare ...: http://stackoverflow.com/questions/24071148/is-it-safe-to-export-tarball-of- running-docker-container – mbarthelemy

risposta

4

Tutta la memoria e la memoria del disco rigido vengono salvate all'interno dell'istanza del contenitore. Se non si utilizzano montature/volumi di docker esterni e server (DB collegati esternamente?), Non si dovrebbe mai avere problemi per l'arresto/riavvio e l'immissione di finestre mobili. Per favore continua a leggere per approfondire questo argomento.

Una domanda che è possibile chiedersi inizialmente, è: in che modo memorizza le modifiche apportate al proprio disco sul runtime? Che cosa è veramente dolce da verificare, è come la docker riesce effettivamente a farlo funzionare. Lo stato originale del disco rigido del contenitore è ciò che gli viene dato dall'immagine. Può NON scrivere su questa immagine. Invece di scrivere nell'immagine, viene fatto un diff di ciò che è cambiato nello stato interno dei contenitori in confronto a ciò che è nell'immagine della finestra mobile. Docker utilizza una tecnologia denominata "Union Filesystem", che crea un livello diff in cima allo stato iniziale dell'immagine della finestra mobile.

Questa "diff" (si fa riferimento come il contenitore di scrivibile nell'immagine qui sotto) viene memorizzato e scompare quando si elimina il vostro contenitore. Quando si utilizza la funzione mobile di docker, il contenitore scrivibile che viene mantenuto nello "stato" temporaneo del contenitore viene memorizzato all'interno di una nuova immagine, tuttavia: non lo consiglio. Lo stato della nuova immagine della finestra mobile non è rappresentato in un file docker e non può essere rigenerato facilmente da una ricostruzione. Creare un nuovo file Docker non dovrebbe essere difficile. Quindi questo è sempre il modo di procedere personalmente per me.

Quando la finestra mobile sta funzionando con volumi montati, server/DB esterni, è necessario assicurarsi che non si vada fuori sincrono e che i servizi temporanei vengano interrotti all'interno del contenitore finestra mobile. Quando si utilizza un file di dock è possibile avviare uno script di bootstrap all'interno del contenitore per avviare le connessioni, eseguire controlli e inizializzare il processo in esecuzione per ottenere l'applicazione in modo duraturo. Ancora una volta, eseguire un contenitore impegnato rende più difficile fare qualcosa di simile.

Union Filesystem

+0

Sei sicuro che Docker salva la memoria all'interno del contenitore? –

+0

In fase di esecuzione, la memoria viene assegnata ai processi all'interno del contenitore, come nei contenitori arrestati, la memoria non è più riservata ai processi in esecuzione all'interno del contenitore mentre vengono arrestati e presumo che sia salvata su disco in contenitore per essere riavviabile. – RoyB

+0

Apprezzerei alcuni collegamenti di prova per questo comportamento, perché nel mio processo di installazione 'nginx' non è riuscito a persistere nel contenitore salvato. –

Problemi correlati