Ja saps què és Docker, el tens instal·lat i n'entens l'arquitectura. Toca aprendre a parlar-hi. La bona notícia és que la CLI de Docker no és una col·lecció arbitrària de comandes que calgui memoritzar: està organitzada seguint exactament els quatre tipus d'objecte que vas veure a la lliçó anterior, amb una gramàtica regular i predictible. Si entens aquesta gramàtica, dedueixes la majoria de les comandes sense consultar-les. En aquesta lliçó veuràs l'anatomia de la CLI moderna i els seus àlies històrics, el sistema d'ajuda integrat (que és la teva millor referència i sempre està actualitzat), les comandes essencials sobre imatges, contenidors i sistema, una sessió completa comentada de principi a fi, i com domar la sortida amb --format i --filter perquè et doni exactament el que necessites.
Contingut
- L'anatomia de la CLI moderna
- Àlies curts: la sintaxi històrica
- El sistema d'ajuda
- Comandes essencials sobre imatges
- Comandes essencials sobre contenidors
- Comandes de sistema
- Una sessió completa comentada
- Formatar la sortida amb
--format - Filtrar la sortida amb
--filter
- L'anatomia de la CLI moderna
La CLI moderna de Docker segueix una estructura de tres peces:
- objecte: sobre quin tipus de cosa actues. Són els del daemon:
image,container,volume,network, més alguns de gestió (system,context,builder). - acció: què li fas. El vocabulari es repeteix entre objectes:
ls,rm,inspect,prune,create. - opcions i arguments: modificadors i l'objecte concret.
Exemples que il·lustren la regularitat:
Tots quatre llisten; només canvia el tipus. I el mateix amb esborrar:
docker container rm el-meu-contenidor
docker image rm nginx:alpine
docker volume rm dades-aurora
docker network rm xarxa-auroraAquesta taula d'accions comunes val per a gairebé tots els objectes:
| Acció | Què fa | Exemple |
|---|---|---|
ls |
Llista els objectes existents | docker image ls |
inspect |
Mostra totes les metadades en JSON | docker container inspect web |
rm |
Elimina un objecte o diversos | docker volume rm dades |
prune |
Elimina tots els objectes no utilitzats d'aquest tipus | docker image prune |
create |
Crea l'objecte sense arrencar-lo | docker network create xarxa-aurora |
La conclusió pràctica: no memoritzis comandes, memoritza la gramàtica. Si necessites llistar volums i no ho has fet mai, docker volume ls és l'aposta òbvia i és correcta.
- Àlies curts: la sintaxi històrica
Abans de la reorganització per objectes, les comandes eren planes: docker ps, docker images, docker rmi. Docker les va mantenir per compatibilitat, i a la pràctica tothom les continua fent servir perquè s'escriuen menys. Veuràs les dues formes constantment, en documentació i en el treball real.
| Àlies curt | Forma moderna equivalent | Què fa |
|---|---|---|
docker ps |
docker container ls |
Llista contenidors en execució |
docker ps -a |
docker container ls -a |
Llista tots els contenidors, també els aturats |
docker images |
docker image ls |
Llista imatges locals |
docker rmi |
docker image rm |
Elimina imatges |
docker pull |
docker image pull |
Descarrega una imatge del registre |
docker push |
docker image push |
Puja una imatge al registre |
docker run |
docker container run |
Crea i arrenca un contenidor |
docker start |
docker container start |
Arrenca un contenidor aturat |
docker stop |
docker container stop |
Atura un contenidor en execució |
docker restart |
docker container restart |
Atura i arrenca de nou |
docker rm |
docker container rm |
Elimina contenidors |
docker logs |
docker container logs |
Mostra la sortida del contenidor |
docker exec |
docker container exec |
Executa una comanda dins d'un contenidor |
docker inspect |
docker container inspect / docker image inspect |
Metadades en JSON |
docker build |
docker buildx build |
Construeix una imatge |
Un parell d'advertiments sobre la taula:
docker rmidocker rmis'assemblen perillosament.rmesborra contenidors;rmiesborra imatges. Una lletra de diferència i conseqüències molt diferents.docker inspectsense objecte és ambigu: busca primer un contenidor amb aquest nom o ID i, si no el troba, una imatge. Quan vulguis certesa, fes servir la forma llarga.docker builddavant dedocker buildx build: en versions actuals,docker buildja fa servir BuildKit per sota. La forma explícitadocker buildx buildés la recomanada el 2026 i la que farem servir a partir del mòdul 2.
Recomanació per a aquest curs: entén la forma llarga, fes servir la curta. Escriure docker ps és perfectament professional; el que no és professional és no saber que equival a docker container ls.
- El sistema d'ajuda
La CLI de Docker documenta cada comanda i cada opció. Aquesta ajuda sempre està sincronitzada amb la teva versió instal·lada, cosa que cap web no garanteix.
Mostra els grups de comandes per objecte (Management Commands) i les comandes soltes (Commands), que són els àlies de l'apartat anterior.
Llista totes les accions disponibles sobre contenidors: attach, commit, cp, create, diff, exec, export, inspect, kill, logs, ls, pause, port, prune, rename, restart, rm, run, start, stats, stop, top, unpause, update, wait.
Aquí hi ha el detall de cada opció. És una sortida llarguíssima —run té desenes d'opcions— i per això convé filtrar-la:
-p, --publish list Publish a container's port(s) to the host
-P, --publish-all Publish all exposed ports to random portsQuè fa aquesta comanda: encadena l'ajuda a grep -i (cerca ignorant majúscules) per quedar-te amb les línies que esmenten "publish". És la manera més ràpida de recordar una opció la lletra de la qual has oblidat.
Dues comandes més de referència:
Ja les coneixes; docker system info és simplement la forma llarga de docker info, i confirma que info també encaixa en la gramàtica objecte-acció.
- Comandes essencials sobre imatges
| Comanda | Què fa | Exemple |
|---|---|---|
docker pull <imatge> |
Descarrega una imatge del registre | docker pull nginx:alpine |
docker images |
Llista les imatges locals | docker images |
docker rmi <imatge> |
Elimina una imatge local | docker rmi nginx:alpine |
docker image prune |
Esborra imatges "penjades" (sense etiqueta) | docker image prune |
docker search <terme> |
Busca imatges a Docker Hub | docker search postgres |
Vegem-les en acció:
3.20: Pulling from library/alpine
f18232174bc9: Pull complete
Digest: sha256:1e42bbe2508154c9126d48c2b8a75420c3544343bf86fd041fb7527e017a4b4a
Status: Downloaded newer image for alpine:3.20
docker.io/library/alpine:3.20Ja saps llegir això de la lliçó 01-02: una capa descarregada, el digest que identifica la imatge de manera immutable, i a l'última línia el nom complet que Docker ha resolt (docker.io/library/alpine:3.20), confirmant el que vas veure sobre registres per defecte.
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx alpine 3f8a4339aadd 2 days ago 52.5MB
alpine 3.20 a8560b36e8b8 3 weeks ago 8.83MB
hello-world latest d2c94e258dcb 9 months ago 13.3kBColumna a columna:
- REPOSITORY: el nom del repositori de la imatge.
- TAG: l'etiqueta, la "versió".
latestés només un nom d'etiqueta més (lliçó 01-05). - IMAGE ID: identificador curt (els primers 12 caràcters del digest). És el que faràs servir per referir-te a la imatge quan no tingui nom.
- CREATED: quan es va construir la imatge, no quan la vas descarregar. Que
hello-worlddigui "9 months ago" és normal. - SIZE: mida descomprimida. Compte: aquestes mides no se sumen directament si les imatges comparteixen capes, cosa que veuràs amb detall a la lliçó 01-05.
Untagged: hello-world:latest
Untagged: hello-world@sha256:940c619fbd418f9b2b1b63e25d8861f9cc1b46e3fc8b018ccfe8b78f19b8cc4f
Deleted: sha256:d2c94e258dcb3c5ac2798d32e1249e42ef01cba4841c2234249495f87264ac5aFixa't en la diferència entre les línies: Untagged significa que s'ha tret un nom que apuntava a la imatge; Deleted significa que les capes s'han esborrat de debò del disc. Si una altra imatge o un contenidor continuessin fent servir aquestes capes, només hi veuries Untagged.
Un error molt habitual apareix si un contenidor (encara que estigui aturat) fa servir la imatge:
Error response from daemon: conflict: unable to remove repository reference "nginx:alpine"
(must force) - container 3f2a9c1b7e4d is using its referenced image 3f8a4339aaddLa lectura és literal: hi ha un contenidor que fa servir aquesta imatge. Esborra primer el contenidor.
La gestió avançada d'imatges (etiquetatge, exportació, neteja fina) es tracta a la lliçó 02-05.
- Comandes essencials sobre contenidors
| Comanda | Què fa | Exemple |
|---|---|---|
docker run <imatge> |
Crea i arrenca un contenidor nou | docker run alpine echo hola |
docker ps |
Llista contenidors en execució | docker ps |
docker ps -a |
Llista tots, inclosos els aturats | docker ps -a |
docker stop <c> |
Atura un contenidor (senyal amable) | docker stop web |
docker start <c> |
Arrenca un contenidor aturat | docker start web |
docker restart <c> |
Atura i torna a arrencar | docker restart web |
docker rm <c> |
Elimina un contenidor aturat | docker rm web |
docker logs <c> |
Mostra la seva sortida | docker logs web |
El punt conceptual més important d'aquest apartat:
docker runcrea un contenidor NOU cada vegada. No reutilitza l'anterior. Per tornar a arrencar-ne un d'existent es fa servirdocker start.
Aquesta confusió és la causa número u que als principiants se'ls acumulin desenes de contenidors aturats.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3f2a9c1b7e4d nginx:alpine "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 0.0.0.0:8080->80/tcp aurora-web-demo
a71c04e9b2f8 alpine:3.20 "echo hola" 5 minutes ago Exited (0) 5 minutes ago nervous_hopperCada columna:
- CONTAINER ID: identificador curt. Pots fer servir un prefix únic (
3f2an'hi hauria prou). - IMAGE: de quina imatge va néixer.
- COMMAND: el procés principal que executa, truncat.
- STATUS: la dada clau.
Up 2 minutes= en execució.Exited (0)= ha acabat, i aquest0és el codi de sortida: 0 significa que ha acabat bé; qualsevol altre número indica error (Exited (137)sol ser mort per falta de memòria okill). - PORTS: mapatges de ports actius.
0.0.0.0:8080->80/tcpes llegeix "el port 8080 de qualsevol interfície de l'amfitrió va al 80 del contenidor". - NAMES: el nom. Si no l'hi poses tu amb
--name, Docker se n'inventa un de graciós (nervous_hopper).
Sobre aturar contenidors, convé conèixer la diferència:
stopenviaSIGTERMal procés principal i espera 10 segons que acabi ordenadament; si no ho fa, aleshores sí que el mata ambSIGKILL. És la manera correcta.killenviaSIGKILLdirectament: mort immediata, sense oportunitat de tancar connexions ni de desar res.
Fes servir sempre stop llevat que el contenidor estigui penjat. El cicle de vida complet amb tots els seus estats s'estudia a la lliçó 03-02, i les opcions de docker run en profunditat a la 03-01.
- Comandes de sistema
| Comanda | Què fa |
|---|---|
docker info |
Estat i configuració del daemon |
docker system df |
Espai en disc per tipus d'objecte |
docker system df -v |
El mateix desglossament, objecte per objecte |
docker system prune |
Esborra contenidors aturats, xarxes sense fer servir, imatges penjades i memòria cau de build |
docker system prune -a |
A més, esborra totes les imatges que no faci servir cap contenidor |
docker system prune -a --volumes |
A més, esborra els volums no utilitzats |
prune mereix cura, perquè és destructiu:
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- unused build cache
Are you sure you want to continue? [y/N] y
Deleted Containers:
a71c04e9b2f8...
Total reclaimed space: 328.4MBLlegeix sempre la llista abans d'escriure y. Notes importants:
- La versió sense
-aés raonablement segura: esborra contenidors aturats (que potser volies conservar, però que rarament importen) i imatges dangling, és a dir, sense etiqueta, que solen ser restes de construccions anteriors. - La versió amb
-aés agressiva: esborra totes les imatges no utilitzades. Després hauràs de tornar-ho a descarregar tot. En un portàtil és un bon recurs quan falta disc; en un servidor de producció, pensa-t'ho dues vegades. --volumesés el més perillós: els volums contenen dades. Esborrar per error el volum de la base de dades d'Aurora Libros significa perdre el catàleg.
Pots evitar la pregunta amb -f, però justament en aquesta comanda la confirmació és la teva xarxa de seguretat.
- Una sessió completa comentada
Recorrerem una sessió de principi a fi, començant i acabant amb el sistema net. Executa-la tu també.
Pas 1. Punt de partida.
Si acabes d'instal·lar Docker, hi veuràs només les capçaleres de les taules, sense files. Si vas fer el hello-world de la lliçó 01-02, tindràs aquesta imatge i un o dos contenidors aturats.
Pas 2. Un contenidor que fa una cosa i mor.
Ja coneixes la sortida. L'interessant ve ara:
Buit. El contenidor va imprimir el seu missatge i el seu procés va acabar, així que ja no està en execució. Però:
CONTAINER ID IMAGE COMMAND CREATED STATUS NAMES
8b1d5e7c9a03 hello-world "/hello" 30 seconds ago Exited (0) 29 seconds ago quirky_lamarrAllà continua, aturat, ocupant espai. Aquesta és la lliçó més important de la sessió: un contenidor que acaba no desapareix.
Pas 3. Descarregar una imatge i executar una comanda concreta.
Què ha passat: Docker va crear un contenidor a partir d'alpine:3.20, va substituir la comanda per defecte de la imatge per echo "Hola des d'Aurora Libros", la va executar, i en acabar el procés el contenidor va passar a Exited (0). Tot el que va després del nom de la imatge és la comanda que s'ha d'executar a dins.
Pas 4. Diversos contenidors de la mateixa imatge.
Dues observacions valuosíssimes:
uname -amostra el nucli de l'amfitrió (6.8.0-52-generic, un nucli d'Ubuntu). Confirma amb els teus propis ulls allò de la lliçó 01-01: el contenidor comparteix el nucli de l'amfitrió.cat /etc/os-releasediu "Alpine Linux". És a dir: nucli d'Ubuntu, espai d'usuari d'Alpine. Això és un contenidor.
I ara:
NAMES IMAGE STATUS
elegant_hertz alpine:3.20 Exited (0) 10 seconds ago
zen_mendeleev alpine:3.20 Exited (0) 25 seconds ago
kind_shirley alpine:3.20 Exited (0) 50 seconds ago
quirky_lamarr hello-world Exited (0) 3 minutes agoQuatre contenidors aturats de tres docker run amb Alpine més el hello-world. Cada run en va crear un de nou. Aquest --format que acabes de fer servir s'explica a l'apartat 8.
Pas 5. Veure els registres d'un contenidor ja acabat.
Encara que el contenidor estigui aturat, la seva sortida es conserva. És una eina de diagnòstic fonamental: si un contenidor mor en arrencar, docker logs et diu per què.
Pas 6. Netejar.
rm accepta diversos noms o ID i retorna els que ha esborrat. Per esborrar-los tots de cop:
container prune elimina tots els contenidors aturats; -f salta la confirmació (aquí és segur perquè ja saps el que hi ha). Comprova-ho:
Taula buida. Les imatges, en canvi, hi continuen sent:
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine 3.20 a8560b36e8b8 3 weeks ago 8.83MB
hello-world latest d2c94e258dcb 9 months ago 13.3kBEsborrar contenidors no esborra imatges. Un cop més: imatge i contenidor són objectes diferents.
- Formatar la sortida amb
--format
--formatLes taules per defecte són amples i porten columnes que sovint no t'interessen. --format accepta plantilles del llenguatge Go perquè triïs tu.
Mode taula, mantenint capçaleres:
La paraula table al principi activa el format tabular amb capçaleres; {{.Camp}} insereix un camp; \t separa columnes.
Mode línia lliure, sense capçaleres, ideal per a scripts:
Mode JSON, per processar amb altres eines:
Camps disponibles més útils:
| Objecte | Camps freqüents |
|---|---|
docker ps |
.ID, .Names, .Image, .Command, .Status, .State, .Ports, .Size, .CreatedAt |
docker images |
.ID, .Repository, .Tag, .Digest, .Size, .CreatedSince |
docker volume ls |
.Name, .Driver, .Mountpoint |
docker network ls |
.ID, .Name, .Driver, .Scope |
Un exemple pràctic que faràs servir molt: obtenir només els ID per passar-los a una altra comanda.
-a (tots) combinat amb -q (quiet, només ID). I el seu ús típic:
Com funciona: $(...) executa primer la comanda interior i substitueix la seva sortida com a arguments de l'exterior. El resultat és "esborra tots els contenidors aturats". Compte: si algun contenidor està en execució, rm es queixarà d'aquest en concret i esborrarà la resta. I si la llista és buida, docker rm protestarà per falta d'arguments, cosa que és inofensiva.
- Filtrar la sortida amb
--filter
--filterMentre que --format decideix quines columnes veus, --filter (o -f) decideix quines files.
Filtres de contenidors més útils:
docker ps -a --filter "status=exited"
docker ps --filter "name=aurora"
docker ps -a --filter "ancestor=alpine:3.20"
docker ps -a --filter "exited=1"Què fa cadascun:
status=exited: només els acabats. Altres valors:running,paused,created,restarting,dead.name=aurora: els que continguin "aurora" al nom (és subcadena, no coincidència exacta). Molt útil amb la convenció de noms d'Aurora Libros.ancestor=alpine:3.20: els creats a partir d'aquesta imatge.exited=1: els que van acabar amb codi de sortida 1, és a dir, els que van fallar. Or pur per diagnosticar.
Filtres d'imatges:
docker images --filter "dangling=true"
docker images --filter "reference=alpine:*"
docker images --filter "before=nginx:alpine"dangling=true: imatges sense etiqueta, restes de construccions. Són les que esborradocker image prune.reference=alpine:*: les que casen amb aquest patró de nom.before=nginx:alpine: les creades abans que aquesta imatge.
I ara la combinació de tot, que és on la CLI brilla:
docker ps -a --filter "status=exited" --filter "exited=1" \
--format "table {{.Names}}\t{{.Image}}\t{{.Status}}"Traducció: "mostra'm en una taula amb nom, imatge i estat tots els contenidors que hagin acabat amb error". Dos filtres es combinen amb I lògica.
Un altre exemple orientat al nostre projecte:
"Esborra tots els contenidors aturats el nom dels quals contingui aurora", sense tocar la resta del teu sistema. Quan als propers mòduls tinguis aurora-api, aurora-db, aurora-cache i aurora-web convivint amb altres experiments, aquest patró t'estalviarà disgustos.
Errors Habituals i Consells
- Fer servir
docker runper reprendre un contenidor.runsempre en crea un de nou. Per reprendre'l,docker start <nom>. Si et trobes amb 30 contenidors aturats idèntics, aquesta n'és la causa. - Confondre
docker rmambdocker rmi. El primer esborra contenidors, el segon imatges. Si dubtes, fes servir les formes llarguesdocker container rmidocker image rm. - Executar
docker system prune -a --volumessense llegir l'avís. Pots esborrar les dades d'una base de dades de desenvolupament en un segon. Llegeix sempre la llista del que eliminarà. - Creure que els contenidors aturats no ocupen. Ocupen: la seva capa d'escriptura, els seus registres i les seves metadades. Mira-ho amb
docker system df. - Oblidar la
-aadocker ps. "No tinc contenidors" sol voler dir "no tinc contenidors en execució". Davant del dubte,docker ps -a. - Consell: posa sempre nom als teus contenidors amb
--name. Els noms aleatoris són impossibles de recordar. Amb la convencióaurora-api,aurora-db, etc., els filtres per nom funcionen sols. - Consell: fes servir prefixos d'ID. No cal l'ID complet: n'hi ha prou amb els primers caràcters si són únics.
docker stop 3f2afunciona. - Consell:
--helpabans que Google. L'ajuda integrada correspon exactament a la teva versió; els blogs, sovint no.
Exercicis
Exercici 1: tradueix a la forma llarga
Reescriu aquestes comandes en la forma moderna docker <objecte> <acció> i explica què fa cadascuna:
docker ps -a
docker images
docker rmi alpine:3.20
docker logs -f aurora-web-demo
docker rm -f aurora-web-demoDesprés, respon: què fa exactament l'opció -f a les dues últimes comandes? Significa el mateix?
Exercici 2: inventari i neteja selectiva
Prepara l'escenari executant:
docker run --name aurora-prova-1 alpine:3.20 echo "cataleg"
docker run --name aurora-prova-2 alpine:3.20 sh -c "exit 1"
docker run --name altra-cosa alpine:3.20 echo "no tocar"Ara, fent servir --filter i --format:
- Llista en una taula (nom, imatge, estat) només els contenidors el nom dels quals contingui
aurora. - Esbrina quin d'ells va acabar amb error, sense llegir estat per estat.
- Esborra en una única comanda només els contenidors aturats el nom dels quals contingui
aurora, deixantaltra-cosaintacte. - Comprova que
altra-cosacontinua allà i que les imatges no s'han tocat.
Exercici 3: quant ocupa això
Respon amb comandes, no de memòria:
- Quant espai total ocupen les teves imatges i quant en podries recuperar?
- Quina imatge concreta és la més gran que tens?
- Si executessis
docker system prune(sense-a), què s'esborraria exactament al teu sistema ara mateix? Esbrina-ho abans d'executar-lo.
Solucions
Solució a l'exercici 1
| Forma curta | Forma llarga | Què fa |
|---|---|---|
docker ps -a |
docker container ls -a |
Llista tots els contenidors, en execució i aturats |
docker images |
docker image ls |
Llista les imatges locals |
docker rmi alpine:3.20 |
docker image rm alpine:3.20 |
Elimina aquesta imatge del disc local |
docker logs -f aurora-web-demo |
docker container logs -f aurora-web-demo |
Mostra la sortida del contenidor i la continua mostrant en directe |
docker rm -f aurora-web-demo |
docker container rm -f aurora-web-demo |
Elimina el contenidor encara que estigui en execució |
Sobre -f: no significa el mateix en els dos casos, i és una font clàssica de confusió.
- A
docker logs -f,-fés--follow: no tanca la sortida, es queda escoltant i mostra les línies noves a mesura que apareixen (comtail -f). Se'n surt ambCtrl+C, cosa que no afecta el contenidor. - A
docker rm -f,-fés--force: mata el contenidor si està en execució i després l'elimina. Sense-f,docker rmsobre un contenidor actiu retorna un error demanant-te que l'aturis primer.
Moralitat: les lletres d'opció es reutilitzen amb significats diferents segons la comanda. Davant del dubte, --help.
Solució a l'exercici 2
# 1. Taula filtrada per nom
docker ps -a --filter "name=aurora" \
--format "table {{.Names}}\t{{.Image}}\t{{.Status}}"NAMES IMAGE STATUS
aurora-prova-2 alpine:3.20 Exited (1) 5 seconds ago
aurora-prova-1 alpine:3.20 Exited (0) 10 seconds ago(El filtre name=aurora és per subcadena, així que només hi apareixen aurora-prova-1 i aurora-prova-2.)
El filtre exited=1 selecciona per codi de sortida. aurora-prova-2 executava sh -c "exit 1", que acaba amb codi 1, i d'aquí que sigui l'únic que hi apareix. És molt més ràpid que llegir la columna STATUS d'una llista llarga.
Desglossament: la comanda interior docker ps -aq --filter ... --filter ... retorna només els ID (-q) dels contenidors aturats el nom dels quals conté "aurora". La substitució $(...) els passa com a arguments a docker rm. Com que altra-cosa no casa amb el filtre de nom, no entra a la llista i sobreviu.
Hi veuràs únicament altra-cosa a la llista de contenidors, i alpine:3.20 intacta a les imatges. Esborrar contenidors no esborra mai imatges.
Solució a l'exercici 3
Llegeix la fila Images: la columna SIZE és el total ocupat i RECLAIMABLE el que alliberaries eliminant les imatges que cap contenidor no fa servir. El percentatge entre parèntesis et dona la proporció d'un cop d'ull.
# 2. La imatge més gran
docker images --format "{{.Size}}\t{{.Repository}}:{{.Tag}}" | sort -h -r | head -5--format produeix una línia per imatge amb mida i nom; sort -h -r ordena per mida llegible per humans (-h entén "MB", "GB") de major a menor (-r); head -5 es queda amb les cinc primeres. La primera línia és la teva imatge més gran.
# 3. Què s'esborraria amb prune (sense executar-lo)
docker ps -a --filter "status=exited" --format "table {{.Names}}\t{{.Status}}"
docker images --filter "dangling=true"
docker network ls
docker builder duRaonament: docker system prune sense -a elimina quatre coses, així que les inspecciones per separat abans: els contenidors aturats (primera comanda), les imatges penjades sense etiqueta (segona), les xarxes no utilitzades per cap contenidor (tercera; les xarxes per defecte bridge, host i none no s'esborren mai) i la memòria cau de construcció (quarta, que mostra quant ocupa). Amb aquesta foto prèvia saps exactament què perdràs abans de confirmar amb y.
Conclusió
La CLI de Docker no es memoritza, es dedueix: docker <objecte> <acció> [opcions], on els objectes són els que gestiona el daemon (image, container, volume, network, system) i les accions es repeteixen entre ells (ls, rm, inspect, prune). Els àlies històrics —docker ps, docker images, docker rmi— continuen sent la manera habitual d'escriure-les, i ara saps a què corresponen.
T'endús les comandes essencials sobre imatges (pull, images, rmi), sobre contenidors (run, ps, ps -a, stop, start, rm, logs) i de sistema (info, system df, system prune), i dues idees que evitaran la meitat dels teus ensopecs futurs: docker run crea sempre un contenidor nou, i un contenidor que acaba no desapareix. A més, amb --format i --filter pots demanar a Docker exactament les files i columnes que necessites, cosa que resulta imprescindible quan tens més de tres o quatre objectes entre mans.
A la sessió pràctica has vist una cosa reveladora: un contenidor d'Alpine mostrant el nucli d'Ubuntu de l'amfitrió. Aquest sistema de fitxers d'Alpine, empaquetat i descarregat en segons, és una imatge, i encara no saps realment què hi ha a dins. A la lliçó següent, Entenent les Imatges de Docker, obriràs aquesta caixa: capes, copy-on-write, digests, etiquetes, imatges base, i per què latest no significa el que et penses.
Docker: De Principiant a Avançat
Mòdul 1: Introducció a Docker
- Què és Docker?
- Instal·lant Docker
- Arquitectura de Docker
- Comandes Bàsiques de Docker
- Entenent les Imatges de Docker
- Creant el teu Primer Contenidor Docker
- El Projecte del Curs: la Plataforma Aurora Libros
Mòdul 2: Treballant amb Imatges Docker
- Docker Hub i Repositoris
- Construint Imatges Docker
- Conceptes Bàsics de Dockerfile
- Instruccions Avançades del Dockerfile
- Gestionant Imatges Docker
- Etiquetatge i Publicació d'Imatges
Mòdul 3: Contenidors Docker
- Executant Contenidors
- Cicle de Vida del Contenidor
- Gestionant Contenidors
- Inspecció i Depuració de Contenidors
- Xarxes a Docker
- Persistència de Dades amb Volums
- Límits de Recursos i Polítiques de Reinici
Mòdul 4: Docker Compose
- Introducció a Docker Compose
- Definint Serveis a Docker Compose
- Comandes de Docker Compose
- Aplicacions Multi-Contenidor
- Variables d'Entorn a Docker Compose
- Perfils, Overrides i Múltiples Entorns
- Desenvolupament Local amb Docker Compose
Mòdul 5: Conceptes Avançats de Docker
- Aprofundiment en Xarxes Docker
- Opcions d'Emmagatzematge Docker
- Millors Pràctiques de Seguretat a Docker
- Optimitzant Imatges Docker
- Builds Avançades amb BuildKit i Buildx
- Registre i Monitoratge a Docker
- El Runtime per Dins: Namespaces, Cgroups i Capes
Mòdul 6: Docker en Producció
- Preparar una Imatge per a Producció
- CI/CD amb Docker
- Orquestrant Contenidors amb Docker Swarm
- Introducció a Kubernetes
- Desplegant Contenidors Docker a Kubernetes
- Escalat i Balanceig de Càrrega
- Estratègies de Desplegament i Rollback
