Lors de la construction d’images Docker multi-architecture, la pratique courante d’utiliser l’option --push avec Docker Buildx pousse directement les images vers le registre sans les signer, meme si la variable d’environnement DOCKER_CONTENT_TRUST est definie a 1. Cet article montre comment contourner cette limitation.
Etape 1 : Activer Docker Content Trust
export DOCKER_CONTENT_TRUST=1
Etape 2 : Creer et utiliser un builder Docker Buildx
docker buildx create --name mybuilder --use
docker buildx inspect --bootstrap
Etape 3 : Construire et pousser les images multi-architecture
Construisez et poussez les images separement pour chaque architecture :
# Construire et pousser pour amd64
docker buildx build --platform linux/amd64 -t docker.io/your-repo/your-image:amd64 --push .
# Construire et pousser pour arm64
docker buildx build --platform linux/arm64 -t docker.io/your-repo/your-image:arm64 --push .
Etape 4 : Creer et pousser un manifest multi-architecture
# Creer un manifest multi-architecture
docker manifest create docker.io/your-repo/your-image:latest \
docker.io/your-repo/your-image:amd64 \
docker.io/your-repo/your-image:arm64
# Annoter les images (optionnel mais recommande)
docker manifest annotate docker.io/your-repo/your-image:latest \
docker.io/your-repo/your-image:amd64 --arch amd64
docker manifest annotate docker.io/your-repo/your-image:latest \
docker.io/your-repo/your-image:arm64 --arch arm64
# Pousser le manifest multi-architecture
docker manifest push docker.io/your-repo/your-image:latest
Etape 5 : Verifier les signatures
docker trust inspect --pretty docker.io/your-repo/your-image:latest
Conclusion
En construisant chaque architecture separement et en creant un manifest manuellement, nous pouvons combiner le support multi-architecture avec la signature Docker Content Trust. Cela garantit que chaque image poussee vers le registre est signee et verifiee, ce qui est essentiel pour des pipelines CI/CD securises.