Skip to main content

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?

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ísticaMàquina VirtualContenidor Docker
Consum de recursosAltBaix
Temps d’arrencadaSegons/minutsMil·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.

Torna a l’índex

Open chat
Hola, estic aqui per ajudar-te