149 votes

Quelle est la différence entre «build de composition docker» et «build de docker»?

Quelle est la différence entre docker-compose build et docker build ?

Supposons que dans un chemin de projet docké il y ait un fichier docker-compose.yml :

 docker-compose build
 

Et

 docker build
 

168voto

hugoShaka Points 957

docker-compose est un wrapper autour de la docker CLI afin de gagner du temps et éviter de 500 caractères au long de lignes (et aussi démarrer plusieurs conteneurs en même temps). Il utilise un fichier appelé docker-compose.yml afin de récupérer les paramètres.

Vous pouvez trouver la référence pour le menu fixe-composer format de fichier ici.

Donc, fondamentalement, docker-compose build va lire votre docker-compose.yml, look de tous les services contenant de l' build: déclaration et d'exécuter un docker build pour chacun.

Chaque build: pouvez spécifier un Dockerfile, un contexte et les arguments à passer à docker.

Pour conclure avec un exemple docker-compose.yml le fichier :

version: '3.2'

services:
  database:
    image: mariadb
    restart: always
    volumes:
      - ./.data/sql:/var/lib/mysql

  web:
    build:
      dockerfile: Dockerfile-alpine
      context: ./web
    ports:
      - 8099:80
    depends_on:
      - database 

Lors de l'appel d' docker-compose build, seulement l' web cible aurez besoin d'une image pour être construit. L' docker build commande ressemblerait à :

docker build -t web_myproject -f Dockerfile-alpine ./web

29voto

Corey Taylor Points 325

docker-compose build construira les services dans le fichier docker-compose.yml .

https://docs.docker.com/compose/reference/build/

docker build construira l'image définie par Dockerfile.

https://docs.docker.com/engine/reference/commandline/build/

14voto

Bharat Raj Points 149

Fondamentalement, docker-composer est une meilleure façon d'utiliser docker que juste un panneau de commande.

Si la question ici est de savoir si docker-composer de la commande de construction, va construire un zip genre de chose contenant plusieurs images, qui, autrement, auraient été construits séparément avec l'habitude Dockerfile, alors la pensée est erronée.

Docker-composition de construire, permettra de construire des images individuelles, par l'entrée de service individuel entrée dans le menu fixe-composer.yml.

Avec docker images, commande, nous pouvons voir toutes les images enregistrées en tant que bien.

La vraie magie est docker-composer jusqu'.

Celui-ci va créer un réseau interconnecté de conteneurs, qui peuvent parler les uns aux autres avec un nom de conteneur similaire à un nom d'hôte.

7voto

shivbits Points 71

En ajoutant à la première réponse...

Vous pouvez donner le nom de l'image et le nom du conteneur en vertu de la définition du service.

par exemple, pour le service appelé " web " dans le menu fixe-composer exemple, vous pouvez donner le nom de l'image et le nom du conteneur de manière explicite, de sorte que le panneau ne doit pas utiliser les valeurs par défaut.

Sinon, le nom de l'image que docker va utiliser sera la concaténation du dossier (Répertoire) et le nom du service. par exemple, myprojectdir_web

Il est donc préférable d'explicitement mis l'image désirée nom qui sera généré lorsque le panneau de construire la commande est exécutée.

par exemple image: mywebserviceImage container_name: mon-webServiceImage-Conteneur

exemple de menu fixe-composer.fichier yml :

version: '3.2'
services:
  web:
    build:
      dockerfile: Dockerfile-alpine
      context: ./web
    ports:
      - 8099:80
    image: mywebserviceImage
    container_name: my-webServiceImage-Container
    depends_on:
      - database

6voto

Pascal H. Points 162

Quelques mots à propos de la différence entre docker build et docker-compose build. Les deux disposent d'une option pour la construction d'images à l'aide d'une image existante en tant que cache de couches.

Malheureusement, jusqu'à maintenant, à ce niveau, les images prises par l'un ne sont pas compatibles avec les autres comme un cache de couches (Id ne sont pas compatibles). Toutefois, docker-compose v1.25.0 (2019-11-18), introduit une fonctionnalité expérimentale COMPOSE_DOCKER_CLI_BUILD de sorte qu' docker-compose utilise natif docker constructeur (donc, les images prises par docker build peut être utilisé comme un cache de couches pour l' docker-compose build)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X