Créer une image à partir d'un conteneur
Il est possible de créer une image à partir d'un conteneur, prenant en compte les changements effectués à l'intérieur.
Démarrez un conteneur PHP/Apache:
docker run -d --name php-app php:apache
Installez les extensions PDO:
docker exec php-app docker-php-ext-install pdo pdo_mysql
Créez une nouvelle image php-pdo:v1
à partir du conteneur:
docker commit php-app php-pdo:v1
Vérifiez que l'image est enregistrée:
docker image ls
[output]REPOSITORY TAG IMAGE ID CREATED SIZE
[output]php-pdo v1 2f7fd0a3be4b 8 minutes ago 414MB
[output]...
Couches d'images
La nouvelle image a repris l'image php:apache
en ajoutant une couche supplémentaire:
docker history php-pdo:v1
[output]IMAGE CREATED CREATED BY SIZE COMMENT
[output]2f7fd0a3be4b 14 minutes ago apache2-foreground 202kB
[output]0c37fe4343a5 10 days ago /bin/sh -c #(nop) CMD ["apache2-foreground"] 0B
[output]<missing> 10 days ago /bin/sh -c #(nop) EXPOSE 80 0B
[output]...
Les couches d'une image ne sont accessibles qu'en lecture. Dans un conteneur, seule la dernière couche est accessible en écriture:
Seule la couche conteneur est accessible en écriture, chaque conteneur ayant la sienne.
Les couches image sont immuables pour que plusieurs conteneurs puissent diverger de l'exacte même image.
La création d'image par la commande commit
est à privilégier pour debuguer un conteneur car la maintenabilité de l'image est limitée: aucune modification des couches n'est possible.