Buone notizie: la nuova finestra mobile (versione 19.03 (attualmente in fase di sperimentazione)) sarà in grado di eseguire rootless negando i problemi che possono verificarsi utilizzando un utente root. Niente più pasticci con permessi elevati, root e tutto ciò che potrebbe aprire il tuo computer quando non volevi.
Video su questo da [DockerCon 2019] Indurimento del demone Docker con modalità Rootless
Alcuni avvertimenti sulla modalità Docker rootless
Gli ingegneri Docker affermano che la modalità rootless non può essere considerata una sostituzione della suite completa di funzionalità del motore Docker. Alcune limitazioni alla modalità rootless includono:
- i controlli delle risorse di cgroups, i profili di sicurezza di apparmor, il checkpoint / restore, le reti di overlay ecc. non funzionano in modalità rootless.
- L'esposizione delle porte dai container richiede attualmente un processo manuale di supporto socat.
- Solo le distribuzioni basate su Ubuntu supportano i filesystem overlay in modalità rootless.
- La modalità Rootless è attualmente prevista solo per build notturne che potrebbero non essere stabili come al solito.
A partire dalla docker 19.3 questo è obsoleto (e più pericoloso del necessario):
Il manuale docker ha questo da dire al riguardo:
Dare accesso non root
Il daemon docker viene sempre eseguito come utente root e, dalla Docker versione 0.5.2, il daemon docker si collega a un socket Unix anziché a una porta TCP. Per impostazione predefinita, il socket Unix è di proprietà dell'utente root e quindi, per impostazione predefinita, è possibile accedervi con sudo.
A partire dalla versione 0.5.3, se tu (o il tuo installer Docker) crei un gruppo Unix chiamato docker e aggiungi utenti ad esso, il demone docker renderà la proprietà del socket Unix leggibile / scrivibile dal gruppo docker all'avvio del demone . Il daemon docker deve essere sempre eseguito come utente root, ma se si esegue il client docker come utente nel gruppo docker, non è necessario aggiungere sudo a tutti i comandi client. A partire dalla 0.9.0, è possibile specificare che un gruppo diverso dalla finestra mobile deve possedere il socket Unix con l'opzione -G.
Avvertenza: il gruppo docker (o il gruppo specificato con -G) è equivalente alla radice; vedi i dettagli della superficie di attacco dei demoni Docker e questo post sul blog Perché non consentiamo agli utenti non root di eseguire Docker in CentOS, Fedora o RHEL (grazie michael-n).
Nella recente versione della modalità sperimentale rootless su GitHub , gli ingegneri menzionano la modalità rootless che consente di eseguire dockerd come utente non privilegiato, utilizzando user_namespaces (7), mount_namespaces (7), network_namespaces (7).
Gli utenti devono eseguire dockerd-rootless.sh invece di dockerd.
$ dockerd-rootless.sh --experimental
Poiché la modalità Rootless è sperimentale, gli utenti devono sempre eseguire dockerd-rootless.sh con –experimental.
Importante da leggere: passaggi successivi all'installazione per Linux (si collega anche ai dettagli di Docker Daemon Attack Surface ).
Gestisci Docker come utente non root
Il daemon docker si collega a un socket Unix anziché a una porta TCP. Per impostazione predefinita, il socket Unix è di proprietà dell'utente root e gli altri utenti possono accedervi solo tramite sudo. Il daemon docker viene sempre eseguito come utente root.
Se non vuoi usare sudo quando usi il comando docker, crea un gruppo Unix chiamato docker e aggiungi utenti ad esso. Quando il daemon docker viene avviato, rende la proprietà del socket Unix leggibile / scrivibile dal gruppo docker.
Aggiungi il gruppo docker se non esiste già:
sudo groupadd docker
Aggiungi l'utente connesso "$ USER" al gruppo docker. Modificare il nome utente in modo che corrisponda all'utente preferito se non si desidera utilizzare l'utente corrente:
sudo gpasswd -a $USER docker
Fare un newgrp docker
o disconnettersi / accedere per attivare le modifiche ai gruppi.
Puoi usare
docker run hello-world
per verificare se è possibile eseguire la finestra mobile senza sudo.