Come installare Containerd

Containerd è una Container Runtime, ovvero un software di management di container, capace di creare, gestire e controllare lo stato dei container.

Esistono diverse Container Runtime, ma Containerd è una delle più diffuse grazie alla sua semplicità e portabilità; infatti viene usata dai più grandi Container Orchestration Engine, ad esempio Kubernetes e Docker, come propria Container Runtime.

In più, ContainerD è open-source, accessibile a tutti, disponibile per diversi sistemi operativi e di facile utilizzo ed installazione.

Cosa serve a Containerd per un corretto funzionamento?

Per il funzionamento di Containerd servono diversi componenti, tutti disponibili sulle repository di GitHub. Più avanti nella guida è spiegato esattamente dove e come reperire queste componenti.

Il primo componente è Runc, è una runtime che usa Containerd per lanciare e gestire i singoli container.

Un’altra componente che è la CNI, questa è composta da un insieme di plug-in. Grazie ad essa, è possibile configurare le network interfaces dei singoli container.

Infine, è necessaria una CLI (Command Line Interface) per interagire con Containerd. Di default Containerd ha la sua CLI, chiamata Ctr.

Download, installazione e configurazione di Containerd

Per iniziare l’installazione di Containerd:

  • Accedi a questa pagina:
  • Scorri in basso fino a trovare l’ultima release
  • Clicca su “Assets” così da visualizzare ogni versione disponibile.
  • Copia il link e scarica il pacchetto usando il comando wget, poi procedi con l’estrazione dell’archivio nella directory /usr/local
Immagine 2023 04 11 130043

wget https://github.com/containerd/containerd/releases/download/v1.6.8/containerd-1.6.8-linux-amd64.tar.gz
tar Cxzvf /usr/local containerd-1.6.8-linux-amd64.tar.gz

Il secondo passo è scaricare e installare runc, pertanto analogamente a prima:

  • Dirigiti su github, cerca l’ultima release e clicca su “Assets” per visualizzare le varie versioni.
  • Copia il link ed utilizza nuovamente il comando wget per scaricare il pacchetto, poi procedi con l’installazione.

wget https://github.com/opencontainers/runc/releases/download/v1.1.4/runc.amd64
install -m 755 runc.amd64 /usr/local/sbin/runc

Ora devi procedere con l’installazione del plug-in CNI.

  • Dirigiti alla seguente pagina di GitHub:
  • Cerca l’ultima release e clicca su “Assets” per vedere le varie versioni.
drgdrgadrg
  • Copia il link ed installa il plug-in utilizzando il comando wget.
  • In seguito, crea una nuova directory /opt/cni/bin ed estrai l’ archivio al suo interno.

wget https://github.com/containernetworking/plugins/releases/download/v1.2.0/cni-plugins-linux-amd64-v1.2.0.tgz
mkdir -p /opt/cni/bin
tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.2.0.tgz

ContainerD Guida allinstallazione 5

Adesso sarà necessario creare un file che contenga la configurazione di Containerd.

Lanciando il comando containerd config default ricevi come output la configurazione di default, pertanto prima si crea la directory /etc/containerd , poi si appende l’output nel file config.toml

mkdir /etc/containerd/
containerd config default > /etc/containerd/config.toml

Per avviare Containerd via systemd, è necessario il seguente file del servizio. Questo file va inserito nella directory /etc/systemd/system

curl -L https://raw.githubusercontent.com/containerd/containerd/main/containerd.service -o /etc/systemd/system/containerd.service

L’ ultimo step è abilitare il servizio containerd usando i seguenti comandi:

sudo systemctl daemon-reload
sudo systemctl start containerd
sudo systemctl enable containerd

Per controllare che l’ installazione sia andata a buon fine puoi usare systemctl status containerd, e constatare che il servizio sia attivo.

ContainerD Guida allinstallazione 7

Interagire con Containerd

La CLI di default di Containerd è ctr. Richiamandola direttamente nel terminale otterrai come output diverse informazioni, tra le quali come utilizzare la sua sintassi, tutti i comandi disponibili e tutte le opzioni.

ContainerD Guida allinstallazione 8

Creare un container nginx con ctr

Inizia scaricando l’immagine di nginx utilizzando ctr, una volta finito il download puoi elencare tutte le immagini disponibili sempre grazie a ctr.

ctr image pull r.deso.tech/dockerhub/library/nginx:latest
ctr image ls

ContainerD Guida allinstallazione 9

Crea il container lanciando il seguente comando, poi elenca i container:

ctr container create –-net-host r.deso.tech/dockerhub/library/nginx:latest container-name
ctr container ls

Il flag –-net-host indica che il container utilizzerà la stessa Network Interface dell’host

ContainerD Guida allinstallazione 10

Procedi con l’ eliminazione dell’immagine del container, poi elenca nuovamente le risorse:

ctr image remove r.deso.tech/dockerhub/library/nginx:latest
ctr container remove container-name
ctr image ls
ctr container ls

ContainerD Guida allinstallazione 11 1

Conclusione

Questo articolo è solo il primo passo verso la containerizzazione! Ora sai cos’è Containerd, come installarlo e come comunicarci tramite ctr. Il prossimo passo sarà approfondire ctr, ed esplorare tutte le funzioni che ci offre.