Syntaxe personnalisée de Dockerfile
Frontend Dockerfile
BuildKit prend en charge le chargement dynamique de frontends à partir d'images de conteneurs. Pour utiliser
un frontend Dockerfile externe, la première ligne de votre
Dockerfile
doit définir la
directive syntax
pointant vers l'image spécifique que vous souhaitez utiliser :
# syntax=[référence d'image distante]
Par exemple :
# syntax=docker/dockerfile:1
# syntax=docker.io/docker/dockerfile:1
# syntax=example.com/user/repo:tag@sha256:abcdef...
Vous pouvez également utiliser l'argument de build prédéfini BUILDKIT_SYNTAX
pour définir la
référence de l'image du frontend sur la ligne de commande :
$ docker build --build-arg BUILDKIT_SYNTAX=docker/dockerfile:1 .
Ceci définit l'emplacement de la syntaxe Dockerfile qui est utilisée pour construire le Dockerfile. Le backend BuildKit permet d'utiliser de manière transparente des implémentations externes qui sont distribuées sous forme d'images Docker et s'exécutent dans un environnement de bac à sable de conteneur.
Les implémentations Dockerfile personnalisées vous permettent de :
- Obtenir automatiquement des corrections de bugs sans mettre à jour le démon Docker
- S'assurer que tous les utilisateurs utilisent la même implémentation pour construire votre Dockerfile
- Utiliser les dernières fonctionnalités sans mettre à jour le démon Docker
- Essayer de nouvelles fonctionnalités ou des fonctionnalités tierces avant qu'elles ne soient intégrées au démon Docker
- Utiliser des définitions de build alternatives, ou créer les vôtres
- Construire votre propre frontend Dockerfile avec des fonctionnalités personnalisées
NoteBuildKit est livré avec un frontend Dockerfile intégré, mais il est recommandé d'utiliser une image externe pour s'assurer que tous les utilisateurs utilisent la même version sur le builder et pour récupérer les corrections de bugs automatiquement sans attendre une nouvelle version de BuildKit ou de Docker Engine.
Versions officielles
Docker distribue des versions officielles des images qui peuvent être utilisées pour construire
des Dockerfiles sous le dépôt docker/dockerfile
sur Docker Hub. Il existe deux
canaux où de nouvelles images sont publiées : stable
et labs
.
Canal stable
Le canal stable
suit le versionnement sémantique.
Par exemple :
docker/dockerfile:1
- maintenu à jour avec la dernière version mineure et de correctif1.x.x
.docker/dockerfile:1.2
- maintenu à jour avec la dernière version de correctif1.2.x
, et cesse de recevoir des mises à jour une fois la version1.3.0
publiée.docker/dockerfile:1.2.1
- immuable : jamais mis à jour.
Nous recommandons d'utiliser docker/dockerfile:1
, qui pointe toujours vers la dernière
version stable de la syntaxe version 1, et reçoit à la fois les mises à jour "mineures" et "de correctif"
pour le cycle de publication de la version 1. BuildKit vérifie automatiquement les
mises à jour de la syntaxe lors d'un build, s'assurant que vous utilisez la
version la plus récente.
Si une version spécifique est utilisée, telle que 1.2
ou 1.2.1
, le Dockerfile doit
être mis à jour manuellement pour continuer à recevoir des corrections de bugs et de nouvelles fonctionnalités. Les anciennes
versions du Dockerfile restent compatibles avec les nouvelles versions du
builder.
Canal labs
Le canal labs
fournit un accès anticipé aux fonctionnalités de Dockerfile qui ne sont pas encore
disponibles dans le canal stable
. Les images labs
sont publiées en même temps
que les versions stables, et suivent le même modèle de version, mais utilisent le suffixe -labs
,
par exemple :
docker/dockerfile:labs
- dernière version sur le canallabs
.docker/dockerfile:1-labs
- identique àdockerfile:1
, avec les fonctionnalités expérimentales activées.docker/dockerfile:1.2-labs
- identique àdockerfile:1.2
, avec les fonctionnalités expérimentales activées.docker/dockerfile:1.2.1-labs
- immuable : jamais mis à jour. Identique àdockerfile:1.2.1
, avec les fonctionnalités expérimentales activées.
Choisissez le canal qui correspond le mieux à vos besoins. Si vous souhaitez bénéficier de
nouvelles fonctionnalités, utilisez le canal labs
. Les images du canal labs
contiennent
toutes les fonctionnalités du canal stable
, plus des fonctionnalités en accès anticipé.
Les fonctionnalités stables du canal labs
suivent le versionnement sémantique,
mais les fonctionnalités en accès anticipé ne le font pas, et les nouvelles versions peuvent ne pas être rétrocompatibles.
Épinglez la version pour éviter d'avoir à gérer des changements de rupture.
Autres ressources
Pour la documentation sur les fonctionnalités labs
, les builds master et les versions
de fonctionnalités nocturnes, consultez la description dans le dépôt source de BuildKit sur GitHub.
Pour une liste complète des images disponibles, visitez le dépôt docker/dockerfile
sur Docker Hub,
et le dépôt docker/dockerfile-upstream
sur Docker Hub
pour les builds de développement.