Differenza tra dockerfile e docker-compose Comprendiamo brevemente il processo d'uso di Docker, che si divide in costruzione di immagini e avvio di container.
Costruzione dell'immagine: cioè, creare un'immagine che contenga l'ambiente, il codice del programma, ecc. necessari per l'installazione e il funzionamento. Questo processo di creazione viene effettuato utilizzando un dockerfile.
Avvio del container: Il container viene infine eseguito estraendo l'immagine compilata e avviando il servizio tramite una serie di istruzioni in esecuzione (come mappatura delle porte, montaggio dati esterni, variabili ambientali, ecc.). Per un singolo container, questo può essere eseguito tramite docker run.
Se comporta l'esecuzione di più container (come l'orchestrazione dei servizi), può essere implementata tramite docker-compose, che può facilmente eseguire più container come servizio (ovviamente, solo uno) e fornisce la funzione di scala (scalabilità dei servizi).
Breve riassunto:
1.dockerfile: costruisci l'immagine;
2. Docker run: avviare il container;
3. docker-compose: avviare il servizio;
Inizia dall'inizio. Se non usi Docker, come costruisci WordPress? Trova prima un server, supponi che il suo sistema operativo sia Ubuntu, e poi segui la documentazione passo dopo passo per digitare il comando e scrivere la configurazione, giusto? E per quanto riguarda l'uso di Docker? Basta trovare un server, qualunque sia il sistema operativo, finché supporta docker, docker usa Ubuntu, docker estraggerà l'ultima immagine di Ubuntu dalla fonte ufficiale, puoi pensare che apresi una macchina virtuale Ubuntu e poi installarla passo dopo passo, proprio come sopra.
Tuttavia, questa installazione presenta uno svantaggio significativo: una volta che il contenitore viene eliminato, non si effettua alcun lavoro. Ovviamente, puoi usare docker commit per salvarlo come immagine, così da poterlo riutilizzare.
Ma l'immagine è generalmente grande, e se condividi solo l'immagine, gli altri non sapranno cosa contiene, il che non è favorevole alla condivisione e al riutilizzo. Una soluzione intuitiva è scrivere uno script per registrare l'intero processo di installazione, così quando lo riinstalli puoi eseguire lo script. Un Dockerfile è uno di questi script che documenta il processo di creazione di un'immagine. Con un Dockerfile, basta eseguire la build docker. Puoi creare un'immagine, e il Dockerfile è un file di testo, molto facile da modificare.
Ora che hai un'immagine WordPress, devi solo eseguire Docker per far funzionare WordPress.
Se è solo WordPress, basta così. Ma spesso sono necessarie più immagini per avviare un servizio, come nginx, mysql, mail service, ecc. Più comunemente, nginx, mysql e smtp sono tutte immagini, e poi queste immagini lavorano insieme per servire un progetto. docker-compose è la soluzione a questo problema. Le informazioni su quali immagini servono al tuo progetto, come configurare ogni immagine, quali volumi montare, e così via sono incluse in docker-compose.yml. Per avviare un servizio, basta compilare con docker, e basta fermarsi/abbassare docker-compse per fermarlo
In breve, un Dockerfile registra il processo di costruzione di una singola immagine, docker-compse.yml registra il processo di costruzione di un progetto (di solito più immagini).
Hai detto che alcuni tutorial usano dockerfile+docker-compose perché docker-compose.yml stesso non contiene informazioni sulla build dell'immagine, e se l'immagine viene prelevata dal registro docker, allora il dockerfile non è necessario; Se l'immagine deve essere costruita, allora deve essere fornito un file Docker.
docker-composeÈ un contenitore di orchestrazione. Ad esempio, hai un'immagine php, un'immagine mysql e un'immagine nginx. Se non c'è docker-compose, ogni volta che avvii devi digitare i parametri di avvio di ogni container, le variabili dell'ambiente, il nome del container, specificare i parametri di collegamento di diversi container e una serie di operazioni, il che è piuttosto macchinoso. Dopo aver usato docker-composer, puoi scrivere questi comandi in docker-composer.yml file contemporaneamente, e ogni volta che avvii l'intero ambiente (inclusi 3 container), devi solo digitare un comando docker-composer up.
dockerfileIl ruolo è costruire un'immagine speculare da zero. Contiene l'ambiente, il codice di programma, ecc. necessari per l'installazione e il funzionamento. Questo processo di creazione viene effettuato utilizzando un dockerfile. Dockerfile - Preparato per il comando docker build per creare un'immagine standalone, che può essere usata anche in docker-compose per build live docker-compose.yml - Uno script per docker-compose che può gestire più container contemporaneamente, incluse le relazioni tra di essi, se costruire con un'immagine ufficiale o con te stesso, varie definizioni di porte di rete, definizioni di spazio di archiviazione, ecc |