Come funziona esattamente il docker? (Teoria)

Sto avventurando nell'uso del docker e cerco di get una chiara presa del prodotto.

Mentre amo tutto ciò che promette è un grande cambiamento di fare le cose manualmente.

Adesso capisco come build un contenitore, albind il codice, impegnarlo e spingerlo sul tuo repo.

Ma quello che mi chiedo è come faccio ad aggiornare il codice una volta installato, ad esempio, ho delle piccole correzioni di bug, ma non le modifiche alle dependencies ma ho anche eseguito un database nello stesso contenitore.

Contenitore:

Nodo e NPM

nginx

mysql

php

Al momento l'unico modo in cui capisco che puoi farlo è quello di chiudere il contenitore per tirare il nuovo contenitore e correre, ma penso che perderai i dati del database.

Ho letto in https://docs.docker.com/engine/tutorials/dockervolumes/ e penso che forse il contenitore supporti un file di dati che persiste tra i contenitori.

Quello che sto cercando di eseguire è gestire un'app web / sito web con il layout contenitore sopra e solo modificare il codice con gli ultimi bugfixes / features.

Sei abbastanza corretto. Le immagini del Docker sono qualcosa che dovresti ribuild e scartare con each aggiornamento. Evitate di commit ovunque ansible (al di fuori degli script di configuration).

Lo stato persistente deve essere gestito tramite i contenitori dati che si montano con l'image. Così i tuoi "dati" vengono disaccoppiati da quella versione specifica e dall'istanza dell'applicazione.