Ja saps quin problema resol Docker; toca instal·lar-lo. Aquesta lliçó t'acompanya pas a pas per la instal·lació als tres sistemes operatius habituals, explicant a cada pas què estàs fent i per què, en lloc de demanar-te que copiïs comandes a cegues. Veuràs primer la diferència fonamental entre Docker Engine i Docker Desktop —dos productes diferents que molta gent confon—, inclosa la qüestió de la llicència, que pot ser rellevant si treballes en una empresa gran. Després faràs la instal·lació completa de Docker Engine a Ubuntu/Debian des del repositori oficial, els passos posteriors imprescindibles a Linux (amb un advertiment de seguretat que no t'has de saltar), i les instal·lacions a Windows amb WSL 2 i a macOS. Acabaràs verificant que tot funciona i desxifrant, línia a línia, la sortida del teu primer contenidor.
Contingut
- Docker Engine i Docker Desktop: dos productes diferents
- La llicència de Docker Desktop a les empreses
- Requisits previs
- Instal·lació de Docker Engine a Ubuntu/Debian
- Passos posteriors a la instal·lació a Linux
- Instal·lació a Windows amb el backend WSL 2
- Instal·lació a macOS (Intel i Apple Silicon)
- Verificació:
docker version,docker infoihello-world - Desinstal·lar i netejar
- Docker Engine i Docker Desktop: dos productes diferents
Aquest és el primer punt on la gent es perd, així que anem a poc a poc.
Docker Engine és el motor: el servei que realment crea i executa contenidors, més l'eina de línia de comandes docker que hi parla. S'executa nativament només a Linux, perquè els contenidors es basen en funcionalitats del nucli de Linux. No té interfície gràfica. És el que corre als servidors.
Docker Desktop és una aplicació d'escriptori per a Windows, macOS i Linux que inclou Docker Engine dins d'una màquina virtual Linux gestionada automàticament, més una interfície gràfica, més eines addicionals (Kubernetes d'un clic, gestió d'extensions, escaneig de vulnerabilitats). A Windows i macOS és pràcticament l'única manera còmoda de treballar, perquè aquests sistemes no tenen nucli Linux: Docker Desktop els el proporciona.
Aquesta és la clau conceptual: quan executes un contenidor Linux en un Mac o a Windows, sempre hi ha una màquina virtual Linux pel mig, encara que no la vegis.
| Aspecte | Docker Engine | Docker Desktop |
|---|---|---|
| Sistemes | Linux natiu | Windows, macOS, Linux |
| Interfície gràfica | No | Sí |
| Com funciona | Processos natius sobre el nucli de l'amfitrió | VM Linux gestionada + GUI |
| Consum de recursos | Mínim | Notable (la VM reserva CPU/RAM) |
| Actualitzacions | Gestor de paquets del sistema | Actualitzador propi de l'app |
| Kubernetes integrat | No (s'instal·la a part) | Sí, amb un clic |
| Llicència | Apache 2.0, gratis sempre | Gratis amb condicions (vegeu l'apartat 2) |
| Ús típic | Servidors, CI, desenvolupament a Linux | Desenvolupament en portàtils Windows/macOS |
A Linux tens les dues opcions. La recomanació general per aprendre i per a servidors és Docker Engine: menys capes, menys consum, i és el que trobaràs en producció. Docker Desktop com a eina de treball diària s'estudia a part, a la lliçó 07-03; aquí només l'instal·lem.
- La llicència de Docker Desktop a les empreses
És un detall pràctic que convé conèixer abans d'instal·lar res al portàtil de la teva empresa.
- Docker Engine és programari lliure sota llicència Apache 2.0. És gratuït en qualsevol context, inclòs el comercial.
- Docker Desktop és gratuït per a ús personal, educatiu, projectes de codi obert i petites empreses, però requereix una subscripció de pagament per a ús professional en organitzacions que superen un llindar (històricament, més de 250 empleats o més de 10 milions de dòlars de facturació anual; els termes exactes els fixa Docker, Inc. i convé consultar-los al seu web).
Traducció pràctica: si treballes en una empresa gran, no instal·lis Docker Desktop sense comprovar amb el teu departament d'IT si hi ha llicències. A Linux sempre pots fer servir Docker Engine sense cap restricció, i existeixen alternatives a l'escriptori que es comenten a la lliçó 07-05.
- Requisits previs
| Sistema | Requisit |
|---|---|
| Linux | Distribució de 64 bits amb nucli 5.x o superior (qualsevol Ubuntu/Debian amb suport actual ho compleix) i systemd |
| Windows | Windows 10/11 de 64 bits, amb WSL 2 habilitat i virtualització activada a la BIOS |
| macOS | Les tres últimes versions majors de macOS; funciona en Intel i en Apple Silicon (M1 i posteriors) |
| Tots | Com a mínim 4 GB de RAM (8 GB recomanats) i permisos d'administrador |
- Instal·lació de Docker Engine a Ubuntu/Debian
Instal·larem des del repositori oficial de Docker, no des dels paquets que porta la distribució. Per què? Perquè el paquet docker.io d'Ubuntu sol anar unes quantes versions endarrerit i no inclou els plugins moderns (buildx, compose) que faràs servir durant tot el curs.
Pas 1: eliminar paquets antics o conflictius
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do
sudo apt remove -y $pkg
doneAquest bucle recorre una llista de paquets que poden entrar en conflicte amb la instal·lació oficial i els desinstal·la. Si no en tens cap d'instal·lat, apt et dirà simplement que el paquet no hi és i seguirà endavant; no és un error. Fixa't que s'elimina docker-compose: és la versió antiga de Compose (la del guionet), que substituirem pel plugin modern.
Pas 2: preparar l'accés al repositori i afegir la clau GPG
sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.ascDesglossem cada línia:
apt updaterefresca la llista de paquets disponibles.ca-certificatesicurlsón necessaris per descarregar de manera segura per HTTPS.install -m 0755 -d /etc/apt/keyringscrea el directori on es guarden les claus de signatura de repositoris, amb permisos correctes.curl -fsSL ... -o ...descarrega la clau pública GPG de Docker. Les opcions signifiquen:-ffalla silenciosament davant d'errors HTTP,-smode silenciós,-Sperò mostra errors,-Lsegueix redireccions. Aquesta clau és el que permet aaptverificar que els paquets que descarregui vénen realment de Docker i no han estat manipulats.chmod a+rfa la clau llegible per tots els usuaris, que és el queaptnecessita.
Si fas servir Debian en lloc d'Ubuntu, canvia
ubuntuperdebiana l'URL de la clau i a la del repositori del pas següent.
Pas 3: afegir el repositori a les fonts d'apt
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt updateAquesta comanda escriu una línia a /etc/apt/sources.list.d/docker.list. Les parts dinàmiques són:
$(dpkg --print-architecture)insereix l'arquitectura de la teva màquina (amd64oarm64), perquè apt descarregui els binaris correctes.signed-by=...lliga aquest repositori a la clau que has descarregat: només s'acceptaran paquets signats amb ella.$(. /etc/os-release && echo "$VERSION_CODENAME")insereix el nom en clau de la teva versió (per exemplenoblea Ubuntu 24.04). Si aquest tros retorna buit, substitueix-lo a mà pel nom en clau de la teva distribució.sudo tee ... > /dev/nullescriu el fitxer amb permisos de root sense abocar-ne el contingut per pantalla.
L'apt update final torna a llegir les fonts, ara incloent-hi la de Docker.
Pas 4: instal·lar els paquets
sudo apt install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-pluginCinc paquets, i convé saber què fa cadascun perquè reapareixeran a la lliçó 01-03:
| Paquet | Què és |
|---|---|
docker-ce |
El daemon dockerd, el motor que crea i gestiona els contenidors (CE = Community Edition) |
docker-ce-cli |
El client de línia de comandes docker, que envia ordres al daemon |
containerd.io |
El runtime de contenidors de baix nivell sobre el qual se sosté dockerd |
docker-buildx-plugin |
El constructor modern d'imatges: habilita docker buildx build |
docker-compose-plugin |
Compose v2 com a subcomanda: habilita docker compose (sense guionet) |
Els dos últims són plugins de la CLI: per això la comanda moderna és docker compose i no docker-compose. La forma amb guionet és el binari antic (Compose v1, en Python), avui retirat; només l'esmentarem per reconèixer-la en documentació vella.
- Passos posteriors a la instal·lació a Linux
La instal·lació deixa Docker funcionant, però només per a root. Aquests passos el deixen usable en el dia a dia.
Arrencar el servei i habilitar-lo a l'inici
enablefa que el servei arrenqui automàticament a cada reinici.--nowa més l'arrenca en aquest mateix moment, sense esperar a reiniciar.statusmostra l'estat; hauries de veure una líniaActive: active (running). Surt de la vista ambq.
A la majoria d'instal·lacions des del repositori oficial el servei ja queda habilitat i arrencat; executar la comanda igualment no fa cap mal i et confirma l'estat.
Fer servir Docker sense sudo: el grup docker
Per defecte, el daemon escolta en un socket Unix (/var/run/docker.sock) que pertany a l'usuari root i al grup docker. Si el teu usuari no és en aquest grup, cada comanda exigirà sudo:
usermod -aG docker $USERafegeix (-a, append) el teu usuari al grup (-G)docker. Sense-aesborraries la resta de grups del teu usuari, així que no l'ometis mai.newgrp dockeraplica la pertinença al grup a la sessió actual sense tancar la sessió. Alternativament, tanca la sessió i torna a entrar.
Comprova que ha funcionat executant docker version (sense sudo): si no dona error de permisos, ja està.
Advertiment de seguretat: el grup docker equival a root
Això no és un detall menor, llegeix-ho amb atenció.
Pertànyer al grup docker és equivalent a tenir permisos de root a la màquina. No és cap exageració: qui pot parlar amb el daemon pot demanar-li que arrenqui un contenidor privilegiat que munti el sistema de fitxers complet de l'amfitrió i modificar-lo a voluntat. El daemon corre com a root i executa el que li demanis.
Conseqüències pràctiques:
- Al teu portàtil de desenvolupament, on ja tens
sudo, afegir-te al grupdockerés perfectament raonable i és el normal. - En un servidor compartit, ficar algú al grup
dockerés donar-li root. Tracta-ho amb la mateixa cura que un accés privilegiat. - Si ho necessites evitar, existeix el mode rootless de Docker, que executa el daemon amb el teu usuari sense privilegis. Té algunes limitacions i s'aborda a la lliçó 05-03, juntament amb la resta de bones pràctiques de seguretat.
- Instal·lació a Windows amb el backend WSL 2
A Windows, Docker Desktop se sosté en WSL 2 (Windows Subsystem for Linux 2), que proporciona un nucli Linux real dins d'una màquina virtual lleugera integrada al sistema. Aquest nucli és el que executa els teus contenidors.
Pas 1: habilitar WSL 2
Obre PowerShell com a administrador i executa:
wsl --installactiva les característiques de Windows necessàries (WSL i Plataforma de màquina virtual) i instal·la una distribució Linux per defecte (normalment Ubuntu).wsl --set-default-version 2fixa WSL 2 com a versió per defecte. WSL 1 no serveix per a Docker: no té nucli Linux real.wsl --updateactualitza el nucli de WSL a l'última versió.
Reinicia l'equip quan t'ho demani. Si wsl --install falla, gairebé sempre és perquè la virtualització està desactivada a la BIOS/UEFI: busca-la com a Intel VT-x, AMD-V o SVM Mode i activa-la.
Pas 2: instal·lar Docker Desktop
Descarrega l'instal·lador des del web oficial de Docker, executa'l i, a les opcions, assegura't de deixar marcada la casella "Use WSL 2 instead of Hyper-V". En acabar, inicia Docker Desktop i espera que l'indicador de la barra d'estat es posi en verd ("Engine running").
Pas 3: configurar la integració amb les teves distribucions
A Settings → Resources → WSL Integration, activa la integració per a les distribucions de WSL que facis servir. Això fa que la comanda docker estigui disponible dins del teu terminal Ubuntu de WSL, parlant amb el mateix motor.
Un consell de rendiment que estalvia moltíssim patiment: guarda els teus projectes dins del sistema de fitxers de Linux (per exemple \\wsl$\Ubuntu\home\el-teu-usuari\projectes), no a C:\Users\.... L'accés dels contenidors a fitxers que viuen al disc de Windows travessa una capa de traducció i és notablement més lent.
Pots treballar des de PowerShell o des del terminal de WSL indistintament; les comandes docker són les mateixes.
- Instal·lació a macOS (Intel i Apple Silicon)
A macOS passa el mateix que a Windows: no hi ha nucli Linux, així que Docker Desktop aixeca una màquina virtual Linux lleugera (fent servir el framework de virtualització d'Apple) on viu el motor.
- Descarrega el
.dmgcorrecte per al teu processador. És important:- Apple Silicon (M1, M2, M3, M4…) → versió
arm64. - Intel → versió
amd64. Si no ho saps, ves al menú Apple → Quant a aquest Mac, o executauname -mal terminal (arm64davant dex86_64).
- Apple Silicon (M1, M2, M3, M4…) → versió
- Obre el
.dmgi arrossega Docker a la carpeta Aplicacions. - Llança Docker des d'Aplicacions. Et demanarà la contrasenya d'administrador la primera vegada per instal·lar components privilegiats.
- Espera que la icona de la balena a la barra de menús deixi d'animar-se.
Una nota important per a Apple Silicon: el teu Mac és arm64, i algunes imatges antigues només es publiquen per a amd64. Docker pot executar-les mitjançant emulació (Rosetta / QEMU), però serà més lenta i ocasionalment inestable. Veuràs un avís del tipus:
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8)No és cap fallada: és un avís que s'està emulant. Les imatges multiplataforma i com construir-les es veuen a la lliçó 05-05.
- Verificació:
docker version, docker info i hello-world
docker version, docker info i hello-worldTant se val el sistema operatiu: aquestes tres comprovacions són la prova de foc.
docker version
Sortida (abreujada i anotada):
Client: Docker Engine - Community
Version: 28.1.1
API version: 1.49
Go version: go1.23.8
Context: default
Server: Docker Engine - Community
Engine:
Version: 28.1.1
API version: 1.49 (minimum version 1.24)
containerd:
Version: 1.7.27
runc:
Version: 1.2.5El que és rellevant:
- Hi ha dos blocs:
ClientiServer. El client és la comanda que acabes de teclejar; el servidor és el daemon. Que apareguin tots dos significa que la comunicació funciona. - Si només apareix
Clientseguit d'un errorCannot connect to the Docker daemon, el motor no està arrencat (Linux:sudo systemctl start docker) o el teu usuari no té permisos sobre el socket (revisa l'apartat 5). - Hi veuràs també
containerdirunc: són els components de baix nivell que explicarem a la lliçó 01-03.
docker info
Sortida (extracte anotat):
Client:
Version: 28.1.1
Plugins:
buildx: Docker Buildx (Docker Inc.) v0.23.0
compose: Docker Compose (Docker Inc.) v2.35.1
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 28.1.1
Storage Driver: overlay2
Cgroup Driver: systemd
Cgroup Version: 2
Operating System: Ubuntu 24.04.2 LTS
OSType: linux
Architecture: x86_64
CPUs: 8
Total Memory: 15.35GiB
Docker Root Dir: /var/lib/dockerAquí el que has de confirmar en una instal·lació acabada de fer:
- A
Pluginsapareixenbuildxicompose. Si no hi són, t'ha faltat instal·lardocker-buildx-pluginodocker-compose-plugin. Storage Driver: overlay2és el driver d'emmagatzematge modern i l'esperat.Containers: 0iImages: 0: normal, encara no has fet res.Docker Root Dirés on el daemon guarda imatges, contenidors i volums. Si aquesta partició s'omple, Docker deixa de funcionar.
Interpretarem aquesta sortida amb més profunditat a la lliçó 01-03.
docker run hello-world
Aquest és l'examen final de la instal·lació:
Sortida completa:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
e6590344b1a5: Pull complete
Digest: sha256:940c619fbd418f9b2b1b63e25d8861f9cc1b46e3fc8b018ccfe8b78f19b8cc4f
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(arm64v8)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.Anem línia a línia, perquè cadascuna ensenya alguna cosa:
| Línia | Què està passant |
|---|---|
Unable to find image 'hello-world:latest' locally |
El daemon ha buscat la imatge al disc i no l'ha trobada. No és un error, és informació. Fixa't en l'etiqueta :latest, afegida automàticament en no especificar-ne cap |
latest: Pulling from library/hello-world |
Està descarregant del registre per defecte (Docker Hub). library/ és l'espai de noms de les imatges oficials |
e6590344b1a5: Pull complete |
S'ha descarregat una capa de la imatge. Les imatges es componen de capes; aquesta només en té una. És el tema de la lliçó 01-05 |
Digest: sha256:940c... |
L'identificador criptogràfic exacte i immutable de la imatge descarregada |
Status: Downloaded newer image |
Confirmació que la descàrrega ha acabat |
Hello from Docker! |
A partir d'aquí ja no parla Docker: és la sortida del programa que s'ha executat dins del contenidor |
| Passos 1 a 4 del missatge | El mateix missatge descriu l'arquitectura: client → daemon → registre → contenidor → sortida cap al teu terminal. És exactament el flux de la lliçó 01-03 |
Si veus aquesta salutació, tens Docker instal·lat i funcionant. El contenidor, per cert, ja ha acabat: ha executat el seu únic procés, aquest ha imprès el text i ha mort. Continua existint en estat "aturat", com comprovaràs a la lliçó 01-04.
- Desinstal·lar i netejar
Per si necessites començar de zero a Ubuntu/Debian:
sudo apt purge -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerdapt purgeelimina els paquets i els seus fitxers de configuració.- Els dos
rm -rfesborren les dades: totes les teves imatges, contenidors i volums. És irreversible, així que assegura-te'n abans.
A Windows i macOS, desinstal·la Docker Desktop com qualsevol altra aplicació; la mateixa app ofereix a més un botó Troubleshoot → Clean / Purge data per buidar les dades sense desinstal·lar.
Errors Habituals i Consells
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?És l'error número u. Dues causes: el servei no està arrencat (sudo systemctl start dockera Linux; obrir Docker Desktop a Windows/macOS) o el teu usuari no és al grupdocker. Per distingir-les, provasudo docker version: si ambsudofunciona, és un problema de permisos, no del servei.- Instal·lar
docker.iodes dels repositoris de la distribució. Funciona per al bàsic, però sol portar una versió antiga i sense els pluginsbuildxicompose, amb la qual cosa la meitat del curs no et funcionarà. Fes servir el repositori oficial. - Fer servir
docker-composeamb guionet. Si aquesta comanda existeix al teu sistema, tens instal·lada la versió 1, ja retirada. La comanda correcta el 2026 ésdocker compose, sense guionet, com a subcomanda dedocker. Comprova-ho ambdocker compose version. - Oblidar la
-aausermod. Escriuresudo usermod -G docker $USER(sense-a) elimina el teu usuari de tots els altres grups, inclòssudo. És una manera ràpida de quedar-te sense permisos d'administrador. Sempre-aG. - Esperar contenidors de Windows a Linux, o a l'inrevés. El contenidor fa servir el nucli de l'amfitrió (o el de la VM). A Linux executes contenidors Linux, punt.
- Consell: no reiniciïs la sessió sense necessitat. Després d'
usermod,newgrp dockeraplica el canvi al terminal actual. A altres terminals ja obertes continuarà fent falta reobrir-los. - Consell: vigila l'espai en disc.
Docker Root Dir(per defecte/var/lib/docker) creix amb cada imatge que descarregues. Si tens/varen una partició petita, tingue-ho en compte des del principi. A la lliçó 01-04 veuràsdocker system dfidocker system pruneper controlar-ho.
Exercicis
Exercici 1: instal·lació verificada
Instal·la Docker al teu sistema seguint l'apartat que et correspongui i respon, amb l'evidència de les comandes:
- Quina versió de Docker Engine tens al client i quina al servidor?
- Estan disponibles els plugins
buildxicompose? En quina versió? - Quin storage driver fa servir la teva instal·lació i en quin directori guarda les dades?
- Pots executar
dockersensesudo?
Exercici 2: diagnòstic d'un error
Un company acaba d'instal·lar Docker a Ubuntu i t'escriu:
$ docker run hello-world
permission denied while trying to connect to the Docker daemon socket at
unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/_ping":
dial unix /var/run/docker.sock: connect: permission deniedRespon: (a) quina és la causa?, (b) quines dues comandes ho arreglen?, (c) per què no és bona idea resoldre-ho simplement executant sempre sudo docker ...?, i (d) quina implicació de seguretat té la solució que proposes?
Exercici 3: llegeix la sortida
Executa docker run hello-world dues vegades seguides i compara'n les dues sortides. Quines línies desapareixen a la segona execució i per què? A continuació, sense fer servir comandes que encara no coneixes, raona què deu haver passat amb els contenidors creats: quants n'hi ha?, continuen en execució?
Solucions
Solució a l'exercici 1
docker version --format '{{.Client.Version}} / {{.Server.Version}}'
docker compose version
docker buildx version
docker info --format 'Driver: {{.Driver}} | Root: {{.DockerRootDir}}'
docker run hello-worldComentari de cada comanda:
docker version --format ...fa servir una plantilla Go per extreure només els dos camps que interessen, en lloc de llegir la sortida completa. Haurien de coincidir client i servidor (per exemple28.1.1 / 28.1.1); una diferència gran entre tots dos pot provocar incompatibilitats d'API.docker compose versionidocker buildx versionconfirmen que els plugins estan instal·lats. Si responendocker: 'compose' is not a docker command, falta el paquet corresponent.docker info --format ...extreu el driver d'emmagatzematge (esperat:overlay2) i el directori de dades (esperat:/var/lib/dockera Linux).- Que
docker run hello-worldfuncioni sensesudorespon a la quarta pregunta.
Solució a l'exercici 2
(a) La causa és que l'usuari no pertany al grup docker i per tant no té permís de lectura/escriptura sobre el socket /var/run/docker.sock. Fixa't que l'error diu permission denied i no Cannot connect: el socket existeix i el daemon està corrent; és purament un problema de permisos.
(b) Les comandes:
La primera afegeix l'usuari al grup sense treure-li els altres (-a); la segona activa la pertinença a la sessió actual. Tancar la sessió i tornar a entrar és equivalent.
(c) Fer servir sudo docker sempre és incòmode i, sobretot, enganyós: els fitxers que Docker creï quedaran amb propietari root, els scripts i les eines del teu editor que invoquin docker sense sudo continuaran fallant, i no guanyes seguretat real, perquè el daemon continua executant-se com a root de totes maneres.
(d) La implicació és important: pertànyer al grup docker equival a tenir root a la màquina, perquè des del daemon es pot arrencar un contenidor privilegiat que munti i modifiqui el sistema de fitxers de l'amfitrió. En un portàtil personal és acceptable; en un servidor compartit cal tractar-ho com una concessió de privilegis, i considerar el mode rootless (lliçó 05-03).
Solució a l'exercici 3
A la segona execució desapareixen aquestes línies:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
e6590344b1a5: Pull complete
Digest: sha256:940c...
Status: Downloaded newer image for hello-world:latestI són substituïdes directament per la salutació Hello from Docker!. El motiu és que la imatge ja és a la memòria cau local del daemon després de la primera descàrrega: no cal contactar amb Docker Hub, així que se salta tot el bloc de descàrrega i crea el contenidor immediatament. Aquesta és una primera pista d'una cosa central en Docker: la imatge es descarrega una vegada i es reutilitza tantes vegades com vulguis.
Sobre els contenidors: se n'han creat dos, un per cada docker run (recorda que run sempre crea un contenidor nou, no reutilitza l'anterior). Cap dels dos continua en execució: el procés de hello-world imprimeix el seu missatge i acaba, i quan el procés principal d'un contenidor acaba, el contenidor passa a estat Exited. Tots dos continuen existint al disc, ocupant espai, fins que els esborris. A la lliçó 01-04 els veuràs amb docker ps -a i aprendràs a eliminar-los.
Conclusió
Ja tens Docker instal·lat i verificat. Pel camí has après a distingir Docker Engine (el motor natiu de Linux, lliure i sense GUI) de Docker Desktop (l'aplicació d'escriptori amb VM inclosa per a Windows, macOS i Linux, amb condicions de llicència a les empreses grans), i saps que a Windows i macOS sempre hi ha una màquina virtual Linux per sota, perquè els contenidors necessiten un nucli Linux.
Has instal·lat els cinc paquets que importen —docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin i docker-compose-plugin—, has deixat el servei habilitat amb systemctl enable --now docker, has afegit el teu usuari al grup docker sabent que això equival a concedir root, i has desxifrat la sortida de docker version, docker info i hello-world.
En aquesta última sortida, el mateix missatge de Docker t'ha avançat el guió de la lliçó següent: el client contacta amb el daemon, el daemon descarrega la imatge del registre, crea el contenidor i retorna la sortida. A Arquitectura de Docker obriràs aquesta caixa: què és exactament el daemon, què hi pinten containerd i runc, què és el socket /var/run/docker.sock i com encaixen totes les peces en un simple docker run.
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
