Imatge
Imatges
Section titled “Imatges”Amb l’ordre docker images
podem veure totes les imatges que s’han descarregat i que estan en la cache de la màquina virtual:
$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEsail-8.3/app latest be7554cb158e 4 days ago 1.66GBredis alpine eac30ee4acc6 5 days ago 46.1MB...
Pots verificar que no tinc cap imatge alpine:3.1
:
$ docker images alpine:3.1REPOSITORY TAG IMAGE ID CREATED SIZE$
Per executar un contenidor s’ha de descarregar la imatge corresponent:
$ docker run --name alpine alpine:3.1 echo "Hello!"Unable to find image 'alpine:3.1' locally3.1: Pulling from library/alpine0f253aa151d7: Pull completeDigest: sha256:4dfc68bc95af5c1beb5e307133ce91546874dcd0d880736b25ddbe6f483c65b4Status: Downloaded newer image for alpine:3.1Hello!
La imatge queda guardada en la màquina virtual:
$ docker images alpine:3.1REPOSITORY TAG IMAGE ID CREATED SIZEalpine 3.1 a1038a41fe2b 5 years ago 5.05MB
El contenidor alpine
necessita aquesta imatge perquè fa servir el sistema de fitxers de la imatge.
Si intento eliminar la imatge docker em diu que no puc:
$ docker image rm alpine:3.1Error response from daemon: conflict: unable to remove repository reference "alpine:3.1" (must force) - container 22a5e3a77bb2 is using its referenced image a1038a41fe2b
Si vols eliminar les imatges que cap contenidor estigui fent servir per tal d’alliberar espai al disc, utilitza aquesta comanda:
$ docker image prune -aWARNING! This will remove all images without at least one container associated to them.Are you sure you want to continue? [y/N] y
Crear una imatge
Section titled “Crear una imatge”Si volem que la nostra aplicació web sigui portable necessitem juntar comportament (el servidor web) amb les dades (el nostre lloc web).
Per tal de construir una nova imatge a partir d’un contenidor hem de fer tres coses:
-
Hem d’escollir l’imatge de partida
-
Modificar el sistema de fitxers del contenidor. Aquests canvis es fan en una nova capa del sistema de fitxers propietat del contenidor.
-
Fer un commit per crear una nova imatge
Arrenquem un contenidor apache:
$ docker run --rm -d --name apache -p 80:80 httpdUnable to find image 'httpd:latest' locallylatest: Pulling from library/httpd09f376ebb190: Already existsdab55b4abfc3: Pull complete4f4fb700ef54: Pull complete1a6d0283f224: Pull complete1abf9110528c: Pull complete7bacb8f85f3a: Pull completeDigest: sha256:43c7661a3243c04b0955c81ac994ea13a1d8a1e53c15023a7b3cd5e8bb25de3cStatus: Downloaded newer image for httpd:latest49a08aa9247bf05de9fcaa68a4518558d98638d0912c08f94a4ae0bad50b9c20
Pots veure que es baixen diferents “layers” (en parlarem més endavant).
Modifica el contingut de la pàgina index.html
del contenidor:
$ docker exec -it apache bash... $ echo "A poc a poc i bona lletra" > htdocs/index.html $ exit exit
O en una sóla línia:
$ docker exec apache bash -c "echo 'A poc a poc i bona lletra' > htdocs/index.html"
Amb l’ordre container diff
pots veure les diferències entre els sistema de fitxers del contenidor i el de les imatges de les quals deriva el contenidor:
$ docker container diff apacheC /rootA /root/.bash_historyC /usrC /usr/localC /usr/local/apache2C /usr/local/apache2/logsA /usr/local/apache2/logs/httpd.pidC /usr/local/apache2/htdocsC /usr/local/apache2/htdocs/index.html
També que el contenidor respon amb el nou fitxer index.html
:
$ curl localhostA poc a poc i bona lletra
Si parem el contenidor aquest s’esborra i es perd el sistema de fitxers (a “layer”) del contenidor.
Si volem, podem crear una nova imatge a partir del contenidor:
$ docker container commit apache apache-dixitsha256:6509481cba1c9ba72c6288cbdd76d9477ca43ce69ddccfa6882323b6c9a301c0
$ docker images apache-dixitREPOSITORY TAG IMAGE ID CREATED SIZEapache-dixit latest 6509481cba1c 30 seconds ago 147MB
Eliminem el contenidor apache i fem servir la imatge apache-dixit
que hem creat per aixecar un nou contenidor:
$ docker stop apacheapache
$ docker run --rm -d --name apache -p 80:80 apache-dixitcf254be6de0e6ece208ae61aaf644a093fd077d0d5e2dd2c9c4df3c147ca6fc3
$ curl localhostA poc a poc i bona lletra
A partir d’aquesta imatge es poden crear tants contendiors apache com vulguis que enlloc de respondre amb <html><body><h1>It works!</h1></body></html>
responen amb A poc a poc i bona lletra
.
El contingut d'aquest lloc web té llicència CC BY-NC-ND 4.0.
©2022-2025 xtec.dev