Préparer des images multi-architecture
Dans cette étape, nous allons préparer des images multi-architecture. Les images multi-architecture vous permettent de construire et de pousser (push) des images qui peuvent s'exécuter sur différentes architectures, telles que amd64
et arm64
. Cela est utile pour déployer des applications dans divers environnements, y compris des serveurs cloud, des appareils de périphérie (edge devices) et des machines locales.
Tout d'abord, nous devons activer les fonctionnalités expérimentales dans Docker. Cela nous permet d'utiliser la commande buildx
, qui est nécessaire pour construire des images multi-architecture. Nous pouvons le faire en créant ou en modifiant le fichier de configuration Docker.
Ouvrez le fichier de configuration Docker à l'aide de nano
:
nano ~/.docker/config.json
Si le fichier n'existe pas, nano
le créera. Ajoutez le contenu suivant au fichier. Si le fichier existe déjà, ajoutez la ligne "experimental": "enabled"
à l'intérieur de l'objet JSON principal.
{
"experimental": "enabled"
}
Enregistrez le fichier en appuyant sur Ctrl + X
, puis Y
, et Enter
.
Ensuite, nous devons créer une nouvelle instance de générateur (builder) qui prend en charge plusieurs architectures. Une instance de générateur est un composant Docker qui gère le processus de construction.
Créez une nouvelle instance de générateur nommée mybuilder
:
docker buildx create --name mybuilder --use
Cette commande crée une nouvelle instance de générateur nommée mybuilder
et la définit comme générateur par défaut pour les opérations de construction suivantes. La sortie devrait indiquer que le générateur a été créé et est utilisé.
Maintenant, construisons une simple image multi-architecture. Nous utiliserons un fichier Dockerfile
de base qui crée une image basée sur Alpine Linux.
Créez un répertoire pour notre projet et accédez-y :
mkdir ~/project/multiarch-demo
cd ~/project/multiarch-demo
Créez un fichier Dockerfile
dans ce répertoire :
nano Dockerfile
Ajoutez le contenu suivant au fichier Dockerfile
:
FROM alpine:latest
CMD ["echo", "Hello from multi-architecture image!"]
Enregistrez le fichier Dockerfile
en appuyant sur Ctrl + X
, puis Y
, et Enter
.
Maintenant, construisez l'image pour les architectures linux/amd64
et linux/arm64
et poussez-la vers un registre factice. Nous utiliserons localhost:5000
comme emplacement pour le registre. Dans un scénario réel, vous remplaceriez cela par l'adresse de votre registre réel.
Construisez et poussez l'image multi-architecture :
docker buildx build --platform linux/amd64,linux/arm64 -t localhost:5000/multiarch-demo:latest --push .
Cette commande construit l'image pour les plateformes spécifiées (linux/amd64
et linux/arm64
), la tagge (tag) comme localhost:5000/multiarch-demo:latest
et la pousse vers le registre localhost:5000
. La sortie montrera le processus de construction pour chaque architecture et l'opération de poussée.