Qual è la differenza tra docker e docker-compose


237

dockere docker-composesembrano interagire con lo stesso dockerFile, qual è la differenza tra i due strumenti?

Risposte:


270

Il dockercli viene utilizzato quando si gestiscono singoli contenitori su un motore docker. È la riga di comando del client per accedere all'API del daemon docker.

Il docker-composecli può essere usato per gestire un'applicazione multi-contenitore. Sposta anche molte delle opzioni da inserire docker runnel docker-compose.ymlfile nel file per un riutilizzo più semplice. Funziona come uno "script" front-end in cima alla stessa finestra mobile API utilizzata da docker, quindi puoi fare tutto ciò che docker-composefa con i dockercomandi e molti script di shell. Vedi questa documentazione su docker-compose per maggiori dettagli.


Aggiornamento per la modalità Sciame

Da quando è stata pubblicata questa risposta, la finestra mobile ha aggiunto un secondo utilizzo dei file docker-compose.yml. A partire dal formato yml versione 3 e dalla finestra mobile 1.13, è possibile utilizzare l'YML con la finestra mobile-composizione e anche per definire uno stack nella modalità sciame della finestra mobile. Per fare quest'ultimo è necessario utilizzare docker stack deploy -c docker-compose.yml $stack_nameinvece di docker-compose upe quindi gestire lo stack con dockercomandi anziché docker-composecomandi. Il mapping è uno per uno tra i due usi:

  • Componi progetto -> Swarm Stack: un gruppo di servizi per uno scopo specifico
  • Compose Service -> Swarm Service: un'immagine e la sua configurazione, possibilmente ingrandite.
  • Componi contenitore -> Attività Swarm: un singolo contenitore in un servizio

Per maggiori dettagli sulla modalità sciame, consultare la documentazione sulla modalità sciame della docker .


76

docker gestisce singoli contenitori

docker-compose gestisce più applicazioni container

L'utilizzo di docker-compose richiede 3 passaggi:

  1. Definire l'ambiente dell'app con un file Docker
  2. Definire i servizi app in docker-compose.yml
  3. Esegui docker-compose upper avviare ed eseguire l'app

docker-compose up

Di seguito è riportato un esempio docker-compose.yml preso dai documenti docker :

services:
  web:
    build: .
    ports:
    - "5000:5000"
    volumes:
    - .:/code
    - logvolume01:/var/log
    links:
    - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

3
Per chiarezza, della linea build: .nei webpunti di sezione per la posizione del Dockerfile creato nel passaggio 1.
AndrewGentry
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.