Docker senza radici

Docker Senza Radici



Docker è uno degli strumenti più potenti e influenti per lo sviluppo e la distribuzione di applicazioni moderne. Come sviluppatori, lo utilizziamo sui nostri computer locali per impostare e configurare rapidamente ambienti che si adattano alle nostre esigenze applicative in pochi secondi.

Tuttavia, quando lavoriamo in Docker, potremmo riscontrare casi in cui dobbiamo creare e utilizzare risorse Docker ma non disponiamo dell'accesso root.

O forse desideri consentire a più utenti su un determinato sistema di accedere e utilizzare Docker senza fornire l'autorizzazione root a tutti gli utenti.







In questo tutorial impareremo a conoscere Docker rootless, cosa significa, come funziona e come possiamo utilizzarlo per consentire agli utenti senza accesso root di utilizzare Docker e i servizi associati.



Cos'è un Docker senza root?

Per impostazione predefinita, una volta installato Docker, il daemon Docker e i suoi strumenti richiedono privilegi di root sul sistema host. Ciò potrebbe comportare un rischio significativo per la sicurezza se Docker viene compromesso, il che può fornire l'accesso root all'aggressore.



Rootless Docker è una funzionalità che ci consente di utilizzare ed eseguire il demone Docker e i contenitori associati senza permessi di root.





Come funziona

Sebbene possa essere difficile approfondire il funzionamento tecnico di un ambiente docker rootless, quella che segue è una panoramica di alto livello che spiega cosa fa un docker rootless e come funziona dietro le quinte.

Spazi dei nomi utente – Una delle funzionalità significative utilizzate da una finestra mobile senza root sono gli spazi dei nomi utente. Questa caratteristica fondamentale del kernel Linux consente ai processi di avere ID utente e gruppo diversi all'interno dello spazio dei nomi rispetto all'esterno. Ciò significa che un processo può essere eseguito come utente root all'interno del suo spazio dei nomi, ma al di fuori di esso viene eseguito come utente normale.



Rete – La prossima caratteristica di Docker rootless è il networking. Per impostazione predefinita, il normale demone docker si basa su stack di rete come iptables e bridge che richiedono autorizzazioni di root.

Docker sfrutta funzionalità come slirp4netns, che fornisce uno stack TCP/IP in modalità utente in una finestra mobile senza root. Ciò consente a Docker di accedere alla rete senza autorizzazione root sul sistema host.

Magazzinaggio – La successiva parte essenziale di una finestra mobile rootless è il driver di archiviazione. Per impostazione predefinita, Docker utilizza un driver di archiviazione overlay2 che, come puoi intuire, richiede i permessi di root. Invece, un'istanza docker rootless utilizza il driver fuse-overlayfs. Questo driver è basato sull'overlay fs FUSE, che ci permette di montarlo senza permessi di root.

Quanto sopra sono alcuni dei componenti essenziali di un'istanza docker rootless. Ricorda che questo non esplora il funzionamento completo di una finestra mobile rootless. Considera la documentazione per saperne di più.

Docker senza root – Requisiti

Usciamo dalla teoria e impariamo come creare e configurare un ambiente Docker rootless.

Per seguire questo post, assicurati di avere quanto segue:

  1. Un sistema basato su Linux con permessi di root.
  2. Accesso alla rete.

Configurazione del sistema con UIDMap

Prima di installare e configurare Docker, dobbiamo installare e configurare il sistema con l'utilità uidmap.

UIDMap ci consente di gestire le mappature UID e GUI dei processi in un sistema Linux nel contenuto degli spazi dei nomi utente. Ricordi quando abbiamo menzionato che Docker rootless sfrutta gli spazi dei nomi degli utenti? Questo strumento ci consentirà di specificare le mappature UID e GID e i relativi spazi dei nomi corrispondenti.

Inizia aggiornando i pacchetti di sistema come segue:

$ sudo apt-ottieni aggiornamento

Successivamente, installa l'utilità uidmap come mostrato:

$ sudo apt-get install uidmap -E

Installazione di Docker senza root

Il passaggio successivo consiste nell'elaborare e installare Docker senza root. Possiamo farlo seguendo i semplici passaggi descritti di seguito:

Inizia scaricando lo script di installazione del docker rootless dal collegamento mostrato di seguito:

https://get.docker.com/rootless

Puoi usare cURL o WGET.

$ arricciare -sSL https: // get.docker.com / senza radici | sh

Tieni presente che non puoi eseguire il comando precedente come utente root.

Una volta completata l'installazione, modifica il tuo file .bashrc utilizzando il tuo editor di testo preferito:

$ nano .bashrc

Successivamente, aggiungi le seguenti voci al file di configurazione bashrc:

esportare XDG_RUNTIME_DIR = / casa / ubuntu / .docker / correre

esportare SENTIERO = / casa / ubuntu / bidone: $PERCORSO

esportare DOCKER_HOST =unix: /// casa / ubuntu / .docker / correre / docker.sock

Assicurati di cambiare l'utente da 'ubuntu' all'utente che desideri installare Docker. L'output dello script ti fornirà i contenuti da aggiungere al file .bashrc.

Salva le modifiche e chiudi l'editor.

Nel passaggio successivo, dobbiamo avviare il demone Docker senza root. Possiamo farlo usando systemctl, come mostrato nel comando seguente:

systemctl --ubuntu avviare la finestra mobile

Una volta avviato, puoi utilizzare i comandi Docker per avviare e configurare i contenitori Docker.

Conclusione

In questo tutorial abbiamo appreso le funzionalità di Docker rootless, come funziona e come possiamo configurarlo su un sistema Linux. Sentiti libero di controllare la documentazione della finestra mobile rootless per saperne di più.