In questo articolo affronteremo i seguenti temi:
Cos'è 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
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.
- 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
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.
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.
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
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
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
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.
Condividi l’articolo!!
-
Linkedin
-
Twitter
-
Facebook
-
Whatsapp
Scopri i nostri corsi!
Pascal Carone
DevOps Instructor & Engineer
Sono conosciuto per la mia capacità di spiegare concetti complessi in termini semplici e per la mia dedizione ad aiutare i miei studenti ad avere successo. Sviluppo e insegno corsi Kubernetes e Google Cloud e mi impegno a rimanere aggiornato sugli ultimi progressi tecnologici.