GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Come eseguire un'installazione di Docker senza root (su Ubuntu e Debian)

Cos'è Docker senza root?

Normalmente, quando si installa Docker, sono necessarie autorizzazioni complete (root) sul sistema host. Ciò crea un potenziale problema di sicurezza perché sia ​​i contenitori che il servizio Docker (demone) funzioneranno come root. Nell'installazione rootless di Docker, solo il demone Docker viene eseguito come root mentre i container vengono eseguiti come utenti normali.

Perchè importa? Perché se il servizio in esecuzione in un container è compromesso, l'autore dell'attacco potrebbe accedere anche ai file di sistema. Non c'è un vero isolamento dei container.

Il progetto Podman open source è stato creato per eseguire principalmente container senza root. Ciò ha spinto Docker a supportare una funzionalità simile in modo che i contenitori vengano eseguiti come utenti normali ma il servizio Docker (daemon) funzioni come root.

Questa installazione senza root è ora disponibile da Docker stesso e non è necessario utilizzare Podman solo per questa funzione.

In questo articolo, spiegherò come installare Docker senza accesso come root. Ma prima di mostrarti questi passaggi, discutiamo prima lo svantaggio di questa modalità.

Svantaggio dell'esecuzione di Docker in modalità rootless

Il più grande svantaggio di questa modalità è la rete e questi problemi sono presenti anche in Podman.

Per impostazione predefinita, Docker utilizza una rete senza root.

Perché è il più veloce, con una velocità fino a 30 Gbps e supporta IPv4 e IPv6.

Ma ha problemi.

I container non avranno l'IP esterno della richiesta e tutte le richieste appariranno da 127.0.0.1.

Questo è un grosso problema, soprattutto se vuoi mettere una protezione che limiti gli attacchi DDOS (Distributed Denial-of-Service) perché tutte le richieste sembreranno provenire dallo stesso indirizzo.

L'uso della modalità Slirp4netns risolve questo problema e mostra l'indirizzo originale della richiesta. Ma ha anche due problemi.

  • IPv6 non supportato.
  • La velocità è molto più lenta (circa 7 Gbps).

Prerequisiti

La modalità rootless non utilizza i bit appiccicosi. Hanno bisogno di newuidmap e newgidmap .

Questo è il motivo per cui dovresti assicurarti che i pacchetti newuidmap e newgidmap siano installati (tramite il pacchetto uidmap) e che ci siano 65.536 ID figlio.

mappa nuovauid verifica che il chiamante sia il proprietario del processo indicato da pid .

id -u
1001
whoami
testuser

Successivamente, verifica che l'utente disponga di 65.536 UID secondari:

grep ^$(whoami): /etc/subuid
testuser:231072:65536
grep ^$(whoami): /etc/subgid
testuser:231072:65536

Cosa significano questi numeri? Il primo numero è il primo ID che puoi usare e il successivo indica quanti ID hai. Ad esempio, inizia con 231072, id 0 significa 231072 e id 1000 significa 241072.

Installa la dbus-user-session e fuse-overlayfs pacchetti.

Per Debian, utilizzare il comando per installare dbus-user-session:

sudo apt install -y dbus-user-session

E poi installa fuse-overlayfs:

sudo apt install -y fuse-overlayfs

Si consiglia di utilizzare il kernel 5.11 o successivo.

Installazione della finestra mobile in modalità rootless

Ora arrivi alla parte principale. La prima parte è la normale installazione di Docker e poi vai con la parte senza root.

Mostrerò i passaggi per Ubuntu.

Installa i soliti pacchetti Docker

Disinstalla prima qualsiasi pacchetto Docker esistente:

 sudo apt remove docker docker-engine docker.io containerd runc

E poi installa Docker su Ubuntu:

 sudo apt update
 sudo apt install docker-ce docker-ce-cli containerd.io

Verifica che Docker Engine sia installato correttamente eseguendo l'immagine hello-world.

sudo docker run hello-world

Considerando che il demone Docker è già in esecuzione, disabilitalo prima.

sudo systemctl disable --now docker.service docker.socket

Installa il pacchetto rootless

Ora installa il pacchetto docker-ce-rootless-extras scaricando lo script ufficiale usando il comando curl:

curl -fsSL https://get.docker.com/rootless | sh

Segui i suggerimenti sullo schermo e avrai installato Docker senza root.

Alla fine di questa schermata di installazione, ci saranno due cose scritte:export=xxx

Copiali e incollali nell'ultimo file .bashrc o se stai usando ZSH, il file .zshrc. Sorgente i file rc che hai appena modificato.

Una volta completata l'installazione, esegui il daemon docker rootless:

 systemctl --user start docker

Esegui automaticamente la finestra mobile senza root ad ogni avvio:

systemctl --user enable docker
sudo loginctl enable-linger $(whoami)

Divertiti.

Informazioni sull'autore:Mead Naji è uno sviluppatore web e sviluppatore Linux vecchia scuola.


Docker
  1. Come installare e utilizzare Docker su Ubuntu 20.04

  2. Come installare Docker su Debian/Ubuntu

  3. Come installare e utilizzare Docker in Ubuntu 20.04

  4. Come installare e configurare la finestra mobile su Debian 11

  5. Come installare Docker ed eseguire Docker Container in Ubuntu

Come installare e utilizzare Docker Compose su Ubuntu 20.04

Come installare e utilizzare Docker Compose su Ubuntu 22.04

Come installare e utilizzare Docker su Ubuntu 22.04

Come installare Docker Compose su Ubuntu

Come installare e utilizzare Docker su Ubuntu 20.04

Come installare Grafana su Ubuntu 18.04 e Debian 8