⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

Images de base

Tous les Dockerfiles partent d'une image de base. Une base est l'image que votre image étend. Elle fait référence au contenu de l'instruction FROM dans le Dockerfile.

FROM debian

Dans la plupart des cas, vous n'avez pas besoin de créer votre propre image de base. Docker Hub contient une vaste bibliothèque d'images Docker qui conviennent pour une utilisation comme image de base dans votre build. Les Images Officielles Docker ont une documentation claire, promeuvent les meilleures pratiques et sont régulièrement mises à jour. Il existe également des images Docker Verified Publisher , créées par des partenaires éditeurs de confiance, vérifiées par Docker.

Créer une image de base

Si vous avez besoin de contrôler complètement le contenu de votre image, vous pouvez créer votre propre image de base à partir d'une distribution Linux de votre choix, ou utiliser la base spéciale FROM scratch :

FROM scratch

L'image scratch est généralement utilisée pour créer des images minimales ne contenant que ce dont une application a besoin. Voir Créer une image de base minimale en utilisant scratch.

Pour créer une image de base de distribution, vous pouvez utiliser un système de fichiers racine, empaqueté en tant que fichier tar, et l'importer dans Docker avec docker import. Le processus de création de votre propre image de base dépend de la distribution Linux que vous souhaitez empaqueter. Voir Créer une image complète en utilisant tar.

Créer une image de base minimale en utilisant scratch

L'image minimale réservée scratch sert de point de départ pour la construction de conteneurs. L'utilisation de l'image scratch signale au processus de build que vous souhaitez que la prochaine commande dans le Dockerfile soit la première couche du système de fichiers dans votre image.

Bien que scratch apparaisse dans le référentiel de Docker sur Docker Hub, vous ne pouvez pas le tirer, l'exécuter ou marquer une image avec le nom scratch. Au lieu de cela, vous pouvez y faire référence dans votre Dockerfile. Par exemple, pour créer un conteneur minimal en utilisant scratch :

# syntax=docker/dockerfile:1
FROM scratch
ADD hello /
CMD ["/hello"]

En supposant qu'un binaire exécutable nommé hello existe à la racine du contexte de build. Vous pouvez construire cette image Docker en utilisant la commande docker build suivante :

$ docker build --tag hello .

Pour exécuter votre nouvelle image, utilisez la commande docker run :

$ docker run --rm hello

Cette image d'exemple ne peut être exécutée avec succès que si le binaire hello n'a pas de dépendances d'exécution. Les programmes informatiques ont tendance à dépendre de certains autres programmes ou ressources pour exister dans l'environnement d'exécution. Par exemple :

  • Runtimes de langage de programmation
  • Bibliothèques C liées dynamiquement
  • Certificats CA

Lors de la construction d'une image de base, ou de toute image, c'est un aspect important à considérer. Et c'est pourquoi la création d'une image de base en utilisant FROM scratch peut être difficile, pour tout ce qui n'est pas de petits programmes simples. D'un autre côté, il est également important de n'inclure que les éléments dont vous avez besoin dans votre image, pour réduire la taille de l'image et la surface d'attaque.

Créer une image complète en utilisant tar

En général, commencez avec une machine en état de marche qui exécute la distribution que vous souhaitez empaqueter en tant qu'image de base, bien que cela ne soit pas requis pour certains outils comme Debootstrap de Debian, que vous pouvez également utiliser pour construire des images Ubuntu.

Par exemple, pour créer une image de base Ubuntu :

$ sudo debootstrap noble noble > /dev/null
$ sudo tar -C noble -c . | docker import - noble

sha256:81ec9a55a92a5618161f68ae691d092bf14d700129093158297b3d01593f4ee3

$ docker run noble cat /etc/lsb-release

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=24.04
DISTRIB_CODENAME=noble
DISTRIB_DESCRIPTION="Ubuntu 24.04.2 LTS"

Il y a plus d'exemples de scripts pour créer des images de base dans le dépôt GitHub de Moby.

Plus de ressources

Pour plus d'informations sur la construction d'images et l'écriture de Dockerfiles, voir :