當我們在一臺 Linux 系統中安裝了 Docker 后, 有時候會遇到下面這樣的錯誤, 我們在運行 docker 的命令時必須加上 sudo, 例如: sudo docker ps, 但是我們其實更希望能夠直接通過 docker ps 來運行 docker 命令,

那么我們可以如何解決這樣的問題呢?
可以參考如下步驟:
-
創建 docker 的用戶組:
sudo groupadd docker -
將當前 user 加入 docker 的用戶組:
sudo usermod -aG docker $USER -
重啟 docker:
sudo snap restart docker /
sudo service docker restart /
sudo /etc/init.d/docker restart
- 從當前 shell 中登出用戶并再次登陸,以重新評估當前的用戶組的權限,
切換當前會話到新 group 或者重啟會話,可以通過
newgrp - docker切換當前用戶組到 docker 用戶組,
注意:這一步是必須的,否則 groups 命令獲取到的是快取的用戶組資訊,剛添加的用戶組資訊可能還未能生效,所以
docker ps執行時同樣會有錯,
一般情況下,操作到這一步就可以解決該問題了,但有時還會遇到下面的問題,導致仍然無法直接通過 docker ps 訪問 docker 命令,

如果在確定了用戶組的設定是正確的情況下,再次遇到這個問題,就是由于 /var/run/docker.sock 檔案的權限不夠導致的,可以按如下操作解決:
-
ls -lrth /var/run/docker.sock查看 docker.sock 的權限,會發現 docker 用戶組其實是沒有讀寫權限的,

-
sudo chmod 666 /var/run/docker.sock更改權限,

-
ls -lrth /var/run/docker.sock再次查看 docker.sock 的權限,這樣就可以了,

這樣就可以直接通過 docker ps 這樣的方式操作 docker 命令,而不用每次都加上 sudo 了,
參考檔案:
- https://docs.docker.com/install/linux/linux-postinstall/
- https://techoverflow.net/2018/12/15/how-to-fix-docker-got-permission-denied-while-trying-to-connect-to-the-docker-daemon-socket/
本文首發于「愚一筆記」,
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/94975.html
標籤:Linux
