Files
landing-web/content/docs/images-et-builds/images-docker.mdx
T
leonm 1542a991b9
CI / 🔍 Lint & Type Check (push) Successful in 2m11s
CI / 🐳 Build & Push Image (push) Successful in 1m16s
feat: docs
2026-07-17 16:15:54 +02:00

71 lines
2.3 KiB
Plaintext

---
title: Images Docker
description: Utiliser une image existante ou construire une image adaptée à son application.
---
## Une image est un template en lecture seule
Une image regroupe le userspace, l'application et sa configuration de démarrage. Elle est figée : on ne la modifie pas après sa construction, on l'instancie sous la forme d'un conteneur.
Une même image peut servir à lancer plusieurs conteneurs.
## Des couches partagées
Une image est composée de couches, ou *layers*. Chaque instruction de construction ajoute une couche. Docker peut mettre ces couches en cache et les partager entre plusieurs images.
Si dix images utilisent `node:25-slim` comme base, cette couche n'est téléchargée et stockée qu'une seule fois.
## Utiliser une image existante
Docker Hub et d'autres registries, comme GHCR, proposent des images prêtes à l'emploi. Pour un service standard, il suffit généralement d'utiliser l'image officielle :
```yaml
services:
postgres:
image: postgres:16-alpine
minio:
image: minio/minio:latest
mailpit:
image: axllent/mailpit:latest
nginx:
image: nginx:1.27-alpine
```
Le suffixe après les deux-points est le **tag**. Par exemple, `postgres:16-alpine` désigne PostgreSQL 16 sur une base Alpine Linux minimale.
<Callout title="Épingler les versions" type="warning">
Préfère un tag précis comme 16-alpine ou 1.27-alpine à latest. Le résultat sera plus prévisible et les builds plus reproductibles.
</Callout>
## Construire une image custom
Le code de ton frontend ou de ton backend est unique. Il faut donc écrire un Dockerfile qui part d'une image existante et ajoute l'application :
```dockerfile
FROM node:25-slim
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
RUN npm run build
CMD ["node", "dist/src/main"]
```
L'instruction `FROM` exprime l'héritage : l'image de l'application réutilise `node:25-slim`, puis ajoute ses propres couches.
## Choisir entre image et build
| Besoin | Choix |
| --- | --- |
| Base de données ou proxy standard | Image officielle via `image:` |
| Application développée par l'équipe | Image custom via un Dockerfile |
| Outil tiers avec configuration légère | Image officielle + variables et volumes |
| Runtime spécifique et code métier | Dockerfile custom |