Motivo:il messaggio di errore indica che l'utente corrente non può accedere al motore docker, perché l'utente non dispone di autorizzazioni sufficienti per accedere al socket UNIX per comunicare con il motore.
Correzione rapida:
-
Esegui il comando come root usando sudo.
sudo docker ps
-
Modifica le autorizzazioni di /var/run/docker.sock per l'utente corrente.
sudo chown $USER /var/run/docker.sock
Attenzione :Esecuzione di sudo chmod 777 /var/run/docker.sock risolverà il tuo problema ma aprirà il socket docker per tutti che è una vulnerabilità di sicurezza come sottolineato da @AaylaSecura. Quindi non dovrebbe essere utilizzato, tranne che per scopi di test sul sistema locale.
Soluzione permanente:
Aggiungi l'utente corrente al gruppo docker.
sudo usermod -a -G docker $USER
Nota:devi disconnetterti e accedere nuovamente affinché le modifiche abbiano effetto.
Fai riferimento a questo blog per saperne di più sulla gestione di Docker come utente non root.
Per chi è nuovo alla shell, il comando:
$ sudo usermod -aG docker $USER
deve avere $USER
definito nella tua shell. Questo è spesso presente per impostazione predefinita, ma potresti dover impostare il valore sul tuo ID di accesso in alcune shell.
La modifica dei gruppi di un utente non modifica gli account di accesso, i terminali e le shell esistenti che un utente ha aperto. Per evitare di eseguire nuovamente un accesso, puoi semplicemente eseguire:
$ newgrp docker
per ottenere l'accesso a quel gruppo nella tua shell attuale.
Dopo aver eseguito questa operazione, l'utente ha effettivamente accesso root al server, quindi esegui questa operazione solo per gli utenti attendibili con accesso sudo senza restrizioni.