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
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
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
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.
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.
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
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.
docker build
, l'option est - --cache-from <image>
docker-composer
,, il existe une balise cache_from
dans la build
section.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 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.