Docker命令讓普通用戶能夠執行的實現

安裝完docker一般就會有docker用戶組

第二步、將當前用戶添加到docker組

sudo gpasswd -a ${USER} docker

第三步、重啟docker

sudo systemctl restart docker

第四步、授予讀寫權限

sudo chmod a+rw /var/run/docker.sock

補充:非root用戶沒有權限使用docker

運行docker run時提示no permission

centos上安裝docker的官方文檔

在安裝docker-ce的時候已經自動創建瞭docker用戶組,但是需要手動添加用戶到docker用戶組

$ sudo usermod -aG docker $USER

或者$ sudo usermod -aG docker {指定用戶名}

但我在添加用戶到docker用戶組後還是提示no permission

比如我要運行ubuntu 14.04的bash:

[[email protected] shell-workspace]$ docker run -it --rm ubuntu:14.04 bash
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.38/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.

why? 原因在於雖然用戶加入瞭docker用戶組,但是當前沒有切換到docker用戶組,所以還是沒有權限

如果一個用戶同時屬於多個用戶組,那麼用戶可以在用戶組之間切換,以便具有其他用戶組的權限。

$ newgrp docker

現在就可以在非root用戶下執行docker相關的命令瞭

除瞭給用戶添加用戶組之外,還有什麼辦法可以讓非root用戶可以執行docker相關的命令呢?

ok,那我們來查看一下/var/run/docker.sock的權限

$ sudo ll /var/run/docker.sock

會得到下面的結果:

srw-rw----. 1 root docker 0 Sep 22 15:29 /var/run/docker.sock

所以現在直接修改/var/run/docker.sock的權限

$ sudo chmod 666 /var/run/docker.sock

現在就可以在非root用戶下運行docker瞭

$ docker run -it --rm ubuntu:14.04 bash
[email protected]:/# cat /etc/os-release 
NAME="Ubuntu"
VERSION="14.04.5 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.5 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
[email protected]:/# exit
exit

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。