Techniques de fabrication d'images Docker avec docker commit et docker build

La création d'images Docker peut être réalisée par deux méthodes principales : la commande docker commit, qui capture l'état actuel d'un conteneur pour en générer une image, et la commande docker build, qui utilise un fichier Docekrfile pour automatiser le processus de construction.

1. Utilisation de docker commit

Lancer une instance de conteneur et installer un service web, par exemple Nginx, pour démontrer la procédure.

docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
ubuntu       22.04     a8780b506fa4   2 weeks ago    77.8MB
docker run -it ubuntu:22.04 /bin/bash
apt-get update && apt-get install -y nginx
exit

Créer une image à partir de l'état du conteneur en utilisant la syntaxe docker commit <ID_CONTENEUR> [NOM_REPO]:[TAG].

docker ps -a
CONTAINER ID   IMAGE            COMMAND       CREATED          STATUS                     NAMES
a1b2c3d4e5f6   ubuntu:22.04     "/bin/bash"   5 minutes ago    Exited (0) 2 minutes ago   festive_almeida
docker commit a1b2c3d4e5f6 mon-image-nginx:latest
sha256:f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7a8b9c0d1e2f3g4h5i6j7
docker images
REPOSITORY         TAG       IMAGE ID       CREATED          SIZE
mon-image-nginx    latest    f7g8h9i0j1k2   10 seconds ago   152MB
ubuntu             22.04     a8780b506fa4   2 weeks ago      77.8MB

Vérifier que le service Nginx est installé dans la nouvelle image.

docker run -it mon-image-nginx:latest /bin/bash
dpkg -l nginx   # Confirme la présence du paquet nginx

2. Utilisation de docker build avec Dockerfile

Pour automatiser la création d'images, un Dockerfile est utilisé, similaire à un Makefile généré après ./configure.

Créer un répertoire de travail et définir le Dockerfile.

mkdir /opt/docker-build
cat <<EOF > /opt/docker-build/Dockerfile
FROM ubuntu:22.04
LABEL maintainer="utilisateur@example.com"
RUN apt-get update && apt-get install -y nginx
COPY script_demarrage.sh /usr/local/bin/script_demarrage.sh
COPY page_accueil.html /var/www/html/index.html
CMD ["/usr/local/bin/script_demarrage.sh"]
EOF

Générer les fichiers nécessaires pour le script de démarrage et la page d'accueil.

echo "nginx -g 'daemon off;'" > /opt/docker-build/script_demarrage.sh
chmod +x /opt/docker-build/script_demarrage.sh
echo "<h1>Bienvenue sur l'image Docker construite avec build</h1>" > /opt/docker-build/page_accueil.html

Supprimer toute image existante portant le même nom pour éviter les conflits.

docker stop $(docker ps -aq) && docker rm $(docker ps -aq)
docker rmi mon-image-nginx:latest

Construire la nouvelle image avec la commande docker build -t [NOM_REPO]:[TAG] [CHEMIN_DOCKERFILE].

docker build -t image-nginx:latest /opt/docker-build/
docker images
REPOSITORY      TAG       IMAGE ID       CREATED         SIZE
image-nginx     latest    x9y8z7w6v5u4   30 seconds ago  152MB
ubuntu          22.04     a8780b506fa4   2 weeks ago     77.8MB

3. Distribution des images Docker

Enregistrement local

Utiliser la commande docker save pour exporter une image dans un fichier tar.

docker save -o sauvegarde-image-nginx.tar image-nginx:latest
ls -lh sauvegarde-image-nginx.tar

Publication sur un registre distant

S'inscrire sur Docker Hub et créer un dépôt, puis se connetcer via le CLI.

docker login -u nom_utilisateur -p mot_de_passe

Retagger l'image pour correspondre au registre et la pousser.

docker tag image-nginx:latest nom_utilisateur/depot-nginx:latest
docker push nom_utilisateur/depot-nginx:latest

Étiquettes: Docker conteneurisation Image Docker Dockerfile Docker Commit

Publié le 29 juin à 19h44