En aquest entrada, us explicarem què és Docker, quins són els seu beneficis i com fer la instal·lació a una Raspberry Pi 5 amb Ubuntu Server. Teniu en l’entrada Com instal·lar Ubuntu Server en un dispositiu RaspBerry PI 5, una guia pas a pas i completa, de com fer la instal·lació del Ubuntu Server a un dispositiu Raspberry Pi 5
Índex
- Què és Docker?
- Característiques principals
- Avantatges de Docker
- Exemples pràctics d’ús
- Guia pas a pas per instal·lar Docker a Raspberry Pi 5 amb Ubuntu Server
- Gestió de contenidors.Docker Compose vs Kubernetes: Quan utilitzar un o l’altre?
- Instal·lació i ús de Docker Compose
- Instal·lació i ús de Kubernetes a Raspberry Pi 5 amb Ubuntu Server
- Interfícies gràfiques per gestionar Docker a Raspberry Pi 5 amb Ubuntu Server
- Conclusió
📌 Què és Docker?
Docker és una plataforma de codi obert que permet empaquetar, distribuir i executar aplicacions dins de contenidors, oferint una solució lleugera i eficient per a la gestió d’aplicacions en diferents entorns.
Els contenidors són entorns aïllats que contenen tot el necessari per executar una aplicació, incloent-hi el codi, les biblioteques i les dependències. Això permet garantir que l’aplicació funcioni de la mateixa manera independentment del sistema operatiu o de la infraestructura on s’executi.
A diferència de les màquines virtuals, que requereixen un sistema operatiu complet per a cada instància, Docker utilitza el mateix nucli del sistema operatiu i només encapsula les aplicacions i els seus requisits, fent que siguin molt més lleugers i ràpids d’executar. Això es tradueix en un **desplegament més àgil, una millor eficiència en l’ús dels recursos i una portabilitat excel·lent**.
Docker s’ha convertit en una eina essencial en el desenvolupament i desplegament d’aplicacions, facilitant la creació d’entorns de desenvolupament consistents, la integració amb sistemes de gestió d’orquestració com **Docker Compose** i **Kubernetes**, i permetent escalar aplicacions de manera eficient.
🔹 Característiques principals
- Portabilitat
- Lleugeresa
- Escalabilitat
- Aïllament
- Execució eficient
🎯 Avantatges de Docker
1️⃣ Portabilitat i compatibilitat
Els contenidors Docker encapsulen totes les dependències necessàries perquè una aplicació s’executi de manera consistent en qualsevol entorn. Això significa que una aplicació desenvolupada i provada en un ordinador local es pot desplegar sense modificacions en servidors, al núvol o en dispositius de baixa potència com la Raspberry Pi.
Un dels principals avantatges de Docker és que elimina els **problemes de compatibilitat** entre diferents sistemes operatius i configuracions, ja que tot el necessari per executar l’aplicació es troba dins del contenidor. Això evita situacions típiques com “funciona en el meu equip, però no en el servidor”.
A més, Docker és compatible amb diverses plataformes, incloent-hi **Linux, Windows i macOS**, i pot executar aplicacions en arquitectures com **x86, ARM i ARM64**, fent-lo ideal per entorns variats, inclosos dispositius IoT i infraestructures al núvol.
Aquesta portabilitat també facilita la integració en **fluxos de treball DevOps**, ja que els contenidors poden ser empaquetats una vegada i executats en qualsevol infraestructura, millorant la velocitat de desplegament i reduint el risc d’errors entre entorns de desenvolupament, prova i producció.
2️⃣ Eficiència en l’ús de recursos
Característica | Màquina Virtual | Contenidor Docker |
---|---|---|
Consum de recursos | Alt | Baix |
Temps d’arrencada | Segons/minuts | Mil·lisegons/segons |
3️⃣ Escalabilitat i desplegament ràpid
Docker permet executar múltiples contenidors en paral·lel, facilitant l’escalabilitat de les aplicacions sense necessitat de configurar màquines virtuals addicionals. Gràcies a la seva lleugeresa, els contenidors es poden iniciar en segons, accelerant el desplegament i reduint el temps d’inactivitat.
A més, amb eines com Docker Compose i Kubernetes, és possible automatitzar la gestió de múltiples serveis i escalar les aplicacions de manera dinàmica segons la demanda. Això és especialment útil en entorns de producció i microserveis, on es requereix desplegar, actualitzar i mantenir aplicacions de manera eficient.
🛠️ Exemples pràctics d’ús
1. Execució d’un servidor web Nginx
docker run -d -p 8080:80 nginx
2. Execució d’una base de dades PostgreSQL
docker run -d --name postgres -e POSTGRES_PASSWORD=secret -p 5432:5432 postgres
3. Desplegament amb Docker Compose
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
db:
image: postgres
environment:
POSTGRES_PASSWORD: secret
🛠️ Guia pas a pas per la seva instal·lació en un entron Ubuntu Server amb Raspberry Pi 5
1️⃣ Actualitzar el sistema
sudo apt update && sudo apt upgrade -y
2️⃣ Instal·lar dependències
sudo apt install -y ca-certificates curl gnupg
3️⃣ Afegir el repositori oficial de Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc > /dev/null
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=arm64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
4️⃣ Instal·lar Docker
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
5️⃣ Activar i iniciar Docker
sudo systemctl enable --now docker
6️⃣ Afegir l’usuari al grup Docker
sudo usermod -aG docker $USER
newgrp docker
7️⃣ Provar Docker
docker run hello-world
🐳 Docker Compose vs Kubernetes: Quan utilitzar un o l’altre?
Tant Docker Compose com Kubernetes són eines per gestionar contenidors, però estan pensades per a escenaris diferents. A continuació, veiem quan utilitzar cadascuna i per què.
🔹 Docker Compose: Ideal per desenvolupament i petits desplegaments
Quan utilitzar Docker Compose?
- 🏗 Desenvolupament local: Per aixecar ràpidament una base de dades, una API i un frontend.
- 🎯 Aplicacions senzilles: Quan no es requereix escalabilitat avançada ni gestió de càrrega.
- 🚀 Prototipatge i testing: Per proves i entorns de pre-producció.
Per què?
- ✅ Fàcil d’instal·lar i configurar.
- ✅ Basat en un fitxer “docker-compose.yml ” senzill i llegible.
- ✅ No requereix infraestructura addicional.
Exemple d’ús (WordPress + MySQL):
version: '3.8'
services:
db:
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: exemple
wordpress:
image: wordpress:latest
restart: always
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
Per iniciar l’entorn:
docker-compose up -d
—
🔹 Kubernetes: Pensat per a producció i entorns escalables
Quan utilitzar Kubernetes?
- 🌍 Aplicacions en producció: Per gestionar múltiples contenidors de manera eficient.
- ⚙ Infraestructures grans i microserveis: Quan es requereixen serveis distribuïts.
- 🔄 Escalabilitat automàtica: Per adaptar-se a la demanda.
- 📡 Orquestració avançada: Per gestió de càrrega, rolling updates i alta disponibilitat.
Per què?
- ✅ Altament escalable i automatitzat.
- ✅ Inclou gestió d’errors i autoreparació.
- ✅ Funciona en entorns multi-núvol i híbrids.
Exemple d’ús (Nginx en Kubernetes):
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Per desplegar l’aplicació:
kubectl apply -f deployment.yaml
—
🏆 Quina eina escollir?
📌 Característica | 🐳 Docker Compose | ☸️ Kubernetes |
---|---|---|
Facilitat d’ús | ✅ Més fàcil | ❌ Més complex |
Escalabilitat | ❌ Limitada | ✅ Altament escalable |
Gestió d’actualitzacions | ❌ Manual | ✅ Rolling updates |
Gestió d’errors | ❌ Limitada | ✅ Autoreparació |
Orquestració avançada | ❌ No disponible | ✅ Disponible |
Ús principal | 🌱 Desenvolupament, testing | 🌍 Producció, apps escalables |
🔹 Si estàs desenvolupant en local o fent proves, usa Docker Compose.
🔹 Si necessites escalar i gestionar contenidors en producció, usa Kubernetes.
⚙️ Instal·lació i ús de Docker Compose
Docker Compose és una eina que permet definir i gestionar aplicacions multi-contenidor mitjançant un fitxer docker-compose.yml
. Això facilita el desplegament i l’administració d’entorns complexos sense necessitat d’executar manualment múltiples comandes docker run
.
🔧 Instal·lació de Docker Compose
Per instal·lar Docker Compose, segueix aquests passos segons el teu sistema operatiu:
- Linux: Executa la comanda següent per descarregar i instal·lar la versió més recent:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
- Mac: Docker Desktop inclou Docker Compose per defecte.
- Windows: També inclòs en Docker Desktop.
🚀 Com funciona Docker Compose
Amb Docker Compose, podem definir una aplicació multi-contenidor en un fitxer YAML i iniciar-la amb una sola comanda. Per exemple, aquest docker-compose.yml
defineix un servei de WordPress amb una base de dades MySQL:
version: '3.8'
services:
db:
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: exemple
MYSQL_DATABASE: wordpress
MYSQL_USER: user
MYSQL_PASSWORD: password
wordpress:
image: wordpress:latest
restart: always
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: user
WORDPRESS_DB_PASSWORD: password
WORDPRESS_DB_NAME: wordpress
Per iniciar aquest entorn, només cal executar:
docker-compose up -d
I per aturar-lo:
docker-compose down
☸️ Instal·lació i ús de Kubernetes a Raspberry Pi 5 amb Ubuntu
Kubernetes és una eina potent per orquestrar contenidors, i amb la Raspberry Pi 5 pots crear un clúster lleuger utilitzant K3s, una versió simplificada de Kubernetes que consumeix menys recursos.
🔧 Instal·lació de Kubernetes (K3s) a Raspberry Pi 5
Per instal·lar Kubernetes a la Raspberry Pi 5 amb Ubuntu, la millor opció és K3s, ja que és més lleuger i està optimitzat per dispositius amb ARM.
📌 Requisits previs
- ✅ Una Raspberry Pi 5 amb Ubuntu 22.04 o superior instal·lat.
- ✅ Un SSD extern recomanat per millor rendiment.
- ✅ Accés SSH a la Raspberry Pi.
- ✅ Docker instal·lat (opcional si vols gestionar contenidors fora de K3s).
- ✅ Usuari amb permisos sudo.
📌 Instal·lació de K3s (Kubernetes lleuger per ARM)
Per instal·lar K3s a la Raspberry Pi, simplement executa aquesta comanda:
curl -sfL https://get.k3s.io | sh -
Això instal·larà K3s com a servei del sistema i posarà en marxa un node mestre del clúster.
📌 Comprovar l’estat de Kubernetes
Un cop instal·lat, comprova que el node està actiu amb:
sudo k3s kubectl get nodes
Hauries de veure la teva Raspberry Pi com a node del clúster Kubernetes:
NAME STATUS ROLES AGE VERSION
raspberrypi Ready control-plane,master 1m v1.26.0+k3s1
🚀 Com funciona Kubernetes a Raspberry Pi
Ara que tens Kubernetes instal·lat a la teva Raspberry Pi, pots començar a desplegar contenidors i serveis. K3s ve amb kubectl
preinstal·lat, així que pots executar les mateixes comandes que faries en qualsevol clúster Kubernetes.
📌 Exemple: Desplegar un contenidor Nginx a Raspberry Pi
Crea un fitxer nginx-deployment.yaml
amb aquest contingut:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Aplica aquest Deployment amb:
sudo k3s kubectl apply -f nginx-deployment.yaml
Per comprovar que els Pods estan en execució:
sudo k3s kubectl get pods
📌 Exposar el servei perquè sigui accessible
Si vols exposar l’aplicació perquè sigui accessible des d’altres dispositius de la teva xarxa, crea un Service:
sudo k3s kubectl expose deployment nginx-deployment --type=NodePort --port=80
Ara pots veure quin port ha assignat Kubernetes amb:
sudo k3s kubectl get services
Busca la línia del servei nginx-deployment
i mira el PORT(S)
assignat (ex: 30008). Llavors, pots accedir a l’aplicació des de qualsevol dispositiu a la teva xarxa mitjançant:
http://IP_DE_LA_RASPBERRY:30008
🔄 Reiniciar i administrar Kubernetes a la Raspberry Pi
Si necessites reiniciar el servei K3s:
sudo systemctl restart k3s
Per desinstal·lar Kubernetes si ja no el necessites:
sudo /usr/local/bin/k3s-uninstall.sh
🎯 Conclusió
Kubernetes a Raspberry Pi 5 amb Ubuntu és una solució potent per provar i gestionar aplicacions amb contenidors en un entorn lleuger. Gràcies a K3s, podem tenir un clúster eficient amb mínim consum de recursos.
Si necessites una solució més lleugera per al desenvolupament en local, pots optar per Docker Compose. Però si vols un clúster escalable amb suport per a múltiples nodes i alta disponibilitat, Kubernetes és la millor opció.
🖥️ Interfícies gràfiques per gestionar Docker a Raspberry Pi 5 amb Ubuntu Server
Si vols gestionar Docker amb una interfície gràfica a la Raspberry Pi 5 amb Ubuntu Server, tens diverses opcions. La millor solució és Portainer, però també pots utilitzar alternatives com LazyDocker (interfície per terminal) o Yacht.
—
🔹 1. Portainer (Recomanat)
Portainer és una interfície web lleugera que permet gestionar contenidors, volums, xarxes i imatges de Docker de manera senzilla. És compatible amb arquitectures ARM, com la Raspberry Pi 5.
✅ Avantatges de Portainer:
- ✔ Interfície web intuïtiva (accessible des del navegador).
- ✔ Compatible amb Raspberry Pi 5 i Ubuntu Server.
- ✔ Permet gestionar contenidors, volums, xarxes i Docker Compose.
- ✔ Suport per control d’usuaris i permisos.
📌 Instal·lació de Portainer a Raspberry Pi 5
1️⃣ Crea un volum per guardar la configuració:
docker volume create portainer_data
2️⃣ Executa el contenidor de Portainer:
docker run -d -p 9000:9000 --name=portainer --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data portainer/portainer-ce:latest
3️⃣ Accedeix a la interfície web:
- Obre el navegador i ves a
http://IP_DE_LA_RASPBERRY:9000
- Crea un usuari i contrasenya
- Comença a gestionar Docker gràficament 🚀
—
🔹 2. LazyDocker (Interfície gràfica per terminal)
LazyDocker és una interfície gràfica que funciona dins la terminal, ideal per monitoritzar contenidors Docker sense necessitat d’un navegador.
✅ Avantatges de LazyDocker:
- ✔ No consumeix recursos extra.
- ✔ Interfície gràfica en mode terminal.
- ✔ Mostra contenidors, imatges i volums d’una forma clara.
📌 Instal·lació de LazyDocker a Raspberry Pi 5
curl -s https://raw.githubusercontent.com/jesseduffield/lazydocker/master/scripts/install_update_linux.sh | bash
Per executar LazyDocker:
lazydocker
Es mostrarà una interfície gràfica dins la terminal amb l’estat dels contenidors.
—
🔹 3. Yacht (Alternativa moderna a Portainer)
Yacht és una alternativa moderna a Portainer, amb un disseny més actual i algunes funcionalitats enfocades a usuaris domèstics.
📌 Instal·lació de Yacht a Raspberry Pi 5
docker run -d -p 8000:8000 --name=yacht --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v yacht_data:/config selfhostedpro/yacht
Accés a Yacht:
- Obre el navegador i entra a
http://IP_DE_LA_RASPBERRY:8000
—
🏆 Conclusió
- 🖥️ Portainer és la millor opció per una gestió completa i senzilla via web.
- 📟 LazyDocker és ideal si prefereixes una interfície dins la terminal.
- 🚀 Yacht és una alternativa moderna, però encara menys madura que Portainer.
Si vols una gestió gràfica completa, instal·la Portainer. Si només necessites monitoritzar Docker ràpidament, LazyDocker és una bona opció. 🚀
💡 Conclusió
Al llarg d’aquest article, hem explorat com Docker ha revolucionat la manera de desplegar i gestionar aplicacions mitjançant contenidors. La seva simplicitat, eficiència i capacitat de portar aplicacions a qualsevol entorn fan que sigui una eina indispensable per a desenvolupadors i administradors de sistemes.
Hem vist les seves característiques principals i com els seus avantatges faciliten la creació d’entorns consistents, escalables i independents del sistema operatiu. A més, a través de diversos exemples pràctics, hem comprovat com Docker pot ser aplicat en diferents escenaris, des de desenvolupament fins a producció.
Per als usuaris de **Raspberry Pi 5 amb Ubuntu Server**, hem detallat una guia d’instal·lació pas a pas per posar en marxa Docker, adaptant-lo a sistemes amb arquitectura ARM. A més, hem comparat les eines de gestió de contenidors, destacant quan és millor utilitzar **Docker Compose** per entorns senzills i quan optar per **Kubernetes** per a infraestructures més complexes.
També hem explicat com instal·lar i utilitzar Docker Compose per gestionar aplicacions multi-contenidor i Kubernetes (amb K3s) per aprofitar la potència de l’orquestració de contenidors en una Raspberry Pi 5.
Finalment, hem explorat diferents interfícies gràfiques per gestionar Docker, com **Portainer**, **LazyDocker** i **Yacht**, facilitant el control i administració dels contenidors de manera visual i intuïtiva.
En definitiva, Docker és una eina imprescindible per simplificar el desplegament d’aplicacions en contenidors, i amb les eines adequades com **Docker Compose, Kubernetes i Portainer**, pots optimitzar el teu flux de treball i aprofitar al màxim la potència de la teva **Raspberry Pi 5 amb Ubuntu Server**. 🚀
Tot i els seus avantatges, és important tenir en compte aspectes com la seguretat, la gestió de recursos i les actualitzacions d’imatges per garantir un funcionament òptim. Amb un bon ús de les seves funcionalitats, Docker esdevé una solució imprescindible per a desenvolupadors, administradors de sistemes i equips DevOps.