Novità
ItaliaNerd

Registrati gratuitamente per diventare un membro della community ItaliaNerd! Una volta effettuato l'accesso, potrai partecipare a questo sito aggiungendo i tuoi argomenti e post, nonché connetterti con altri membri tramite la tua casella di posta privata! Sentiti libero di utilizzare questo portale come meglio credi, per una breve panoramica dai un'occhiata QUI!

Icona risorsa

Guida Verificata Installare Docker e Portainer su Linux

Una guida verificata è stata controllata dallo staff punto per punto e se ne attesta la sua validità.

Introduzione​

In questa guida, vediamo come installare Docker e Portainer nel modo più semplice possibile, riuscendo ad ottenere anche un discreto livello di sicurezza nel caso si installasse su una VPS con ip pubblico.
Il sistema operativo di riferimento sarà Debian 12, ma naturalmente la guida può essere seguita anche su OS non debian-based con i dovuti accorgimenti e modifiche ai comandi comuni.

Tralasciamo volutamente la "spiegazione" di cosa sia docker, per non allungare troppo la guida. Velocemente, ricordiamoci che le componenti fondamentali sono:

  • Docker Engine: Ovvero il responsabile dell'esecuzione e gestione dei container Docker sul nostro sistema operativo (host). Di base fornisce un'interfaccia a riga di comando (CLI) per poter gestire, o più in generale "interagire" con i Container.
  • Docker Images: Sono i templates che definiscono il contenuto e configurazione di un container. Le immagini contengono tutti gli elementi e i set di istruzioni necessarie per avviare l'applicazione "containerizzata". Più container possono utilizzare la stessa immagine per essere avviati. Le immagini possono essere prelevate da canali ufficiali o create per essere poi condivise sui vari canali.
  • Docker Registry: Ovvero un repository pubblico utilizzato per archiviare e condividere le immagini. Docker Hub è il registro predefinito "ufficiale" da cui prelevare le immagini, ma possono essere utilizzati anche registri privati.
  • Docker Compose: Si tratta di un tool ufficiale che aiuta nella configurazione e gestione dei propri contenitori. Normalmente il tutto viene gestito tramite i comandi Docker CLI. Compose ci permette invece di utilizzare un singolo file YAML per configurare i container e le eventuali relazioni fra essi.
Quel che faremo sarà installare Portainer, ovvero un'interfaccia web-based che semplifica enormemente la gestione dei nostri container, sia tramite CLI che tramite Compose.

Installazione​

Se state installando Docker su una VPS accessibile pubblicamente, consigliamo intanto una lettura della guida

Prima di procedere, come sempre, assicuriamoci che il nostro sistema sia aggiornato
Bash:
sudo apt -y update && sudo apt -y upgrade

Su Debian 12, installiamo intanto i pacchetti richiesti
Bash:
sudo apt install lsb-release gnupg2 apt-transport-https ca-certificates curl software-properties-common -y
Importiamo le chiavi GPG per le repository Docker
Bash:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/debian.gpg
e aggiungiamo la repository ufficiale
Bash:
sudo add-apt-repository "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

Procediamo ora con l'installazione
Bash:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Aggiungiamo ora il nostro utente attivo al gruppo Docker, in modo da poter eseguire i comandi senza il "sudo"
Bash:
sudo usermod -aG docker $USER
newgrp docker

Assicuriamoci poi che il servizio Docker sia stato avviato
Bash:
sudo systemctl start docker && sudo systemctl enable docker
Possiamo controllare lo stato con
Bash:
systemctl status docker
Che ci restituirà qualcosa di simile
1.png

A questo punto, docker è installato e funzionante, possiamo già usarlo per creare i nostri container con i comandi CLI. Ma noi vogliamo gestire il tutto in modo ottimale, magari con qualche aiuto grafico! Quindi procediamo nell'installazione del nostro primo container, ovvero Portainer!

Ogni container, se arrestato, perderà tutte le modifiche fatte e al prossimo avvio ripartirà secondo le istruzioni iniziali (o dell'immagine iniziale). Per ovviare a questo problema, è possibile creare un "volume permanente" sul nostro sistema host che verrà usato dal container, in modo virtualizzato.

Per installare Portainer creiamo prima un volume digitando
Bash:
docker volume create portainer_data

Adesso creiamo il container per Portainer
Bash:
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

Questo comando CLI scaricherà l'ultima immagine disponibile di Portainer, i dati locali verranno salvati nel volume creato sopra e esporrà le porte predefinite di portainer, ovvero la 9443 e la 8000. Quest'ultima (8000) è un tunnel server TCP ed è opzionale, necessaria solo se intendiamo usare l'Edge agent.

ATTENZIONE: La porta 9443 verrà esposta pubblicamente, quindi se stiamo installando Portainer su una VPS assicuriamoci di bloccarla con un firewall, ci accederemo poi tramite tunnel ssh (spiegazione di seguito). Se invece non vogliamo rendere la porta accessibile, basta modificare leggermente il comando sopra, sostituendo -p 9443:9443 con -p 127.0.0.1:9443:9443, in questo modo possiamo ugualmente accedere alla porta tramite tunnel ssh e la porta sarà disponibile solo in localhost.

Ora, navigando su https://nostro-ip:9443 dovremmo vedere la schermata iniziale di portainer, che ci chiederà di creare un nuovo utente amministratore, ma la vediamo fra poco.

Accedere a Portainer installato su una VPS​

Nel caso in cui abbiamo installato portainer su una VPS, come indicato sopra, abbiamo bloccato tramite firewall la porta 9443. Ma ora come facciamo ad accedere a questa porta dal nostro pc di casa?

Semplicemente sfruttando un tunnel ssh, ovvero accediamo alla nostra macchina in ssh e creiamo un tunnel per esporre la porta 9443 SOLO al nostro computer (finchè la sessione ssh rimane attiva).

Se usiamo un sistema unix, possiamo farlo direttamente tramite il normale comando ssh:
Bash:
ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION:DESTINATION_PORT [USER@]SSH_SERVER

Ad esempio, se la nostra macchina ha IP 1.2.3.4:
Bash:
ssh -L 9443:127.0.0.1:9443 user@1.2.3.4

navigando ora su https://127.0.0.1:9443 vedremo la schermata iniziale di Portainer

NOTA: Al primo avvio di Portainer, l'interfaccia web risponderà solo per 10 minuti, il tempo necessario per creare l'account amministratore. Quindi se da quando abbiamo avviato il container per Portainer a quando ci accediamo per la prima volta, sono passati 10 minuti, dovremmo riavviare il container per renderlo nuovamente disponibile. Possiamo farlo digitando:
Bash:
docker restart portainer

Se invece siamo su sistema Windows, possiamo creare un tunnel tramite Putty
2.png

Sotto la schermata "Tunnels" dobbiamo indicare la porta sorgente (Source port) e l'indirizzo destinazione (Destination). Assicuriamoci di cliccare il tasto "Add" in modo da avere una schermata simile a questa3.png

Possiamo ora procedere a collegarci normalmente in SSH alla nostra VPS e portainer sarà disponibile all'indirizzo indicato.

Appena creato l'account amministratore, possiamo usare Portainer per gestire tutti i nostri container e crearli (o rimuoverli) in modo decisamente semplificato.
4.png
5.png

Tramite la voce "Stack" possiamo avviare i comandi Compose, numerosi esempi sono disponibili nelle repository dei programmi noti, ad esempio per nginx (QUI l'immagine ufficiale) possiamo usare sotto la voce "Stack" quanto segue
YAML:
web:
  image: nginx
  volumes:
   - ./templates:/etc/nginx/templates
  ports:
   - "8080:80"
  environment:
   - NGINX_HOST=foobar.com
   - NGINX_PORT=80

O per Qbittorrent
YAML:
---
version: "2.1"
services:
  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent:latest
    container_name: qbittorrent
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - WEBUI_PORT=8080
    volumes:
      - /path/to/appdata/config:/config
      - /path/to/downloads:/downloads
    ports:
      - 8080:8080
      - 6881:6881
      - 6881:6881/udp
    restart: unless-stopped

Dove modifichiamo in base alle nostre esigenze i volumi, le porte e quant'altro.
Esempio simile discusso leggermente più nel dettaglio può essere trovato in fondo a questa guida:

Ultima nota: ricordiamoci che i container NON si aggiornano da soli, ma il più delle volte dovremmo scaricare l'immagine aggiornata e avviare nuovamente il container, con la sicurezza che i nostri file locali non verranno modificati grazie ai volumi permanenti. Ad esempio, per aggiornare Portainer, basterà usare i comandi
Bash:
docker stop portainer
Per fermare il container, poi dobbiamo rimuoverlo, scaricare la nuova immagine e inviare nuovamente il comando CLI
Bash:
docker rm portainer
Bash:
docker pull portainer/portainer-ce:latest
Bash:
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

Come possiamo intuire, verrà usato lo stesso volume portainer_data dell'installazione precedente, il risultato sarà l'aggiornamento dell'immagine.

Per il momento abbiamo terminato, giunti alla fine di questa breve guida, spero possa esservi d’aiuto 🙂
  • Like
Reazioni: Tibird59
Autore
Anyma
Visite
807
Primo rilascio
Ultimo aggiornamento

Ratings

0.00 stella(e) 0 valutazioni

Più risorse di Anyma

Indietro
Alto