天天看點

如何解決非root使用者沒有權限運作docker指令的問題?

問題描述:

”Got permission denied while trying to connect to the Docker daemon

socket at unix:///var/run/docker.sock: Get

http://%2Fvar%2Frun%2Fdocker.sock/v1.26/images/json:

dial unix

/var/run/docker.sock: connect: permission denied“

原因(摘自docker手冊):

Manage Docker as a non-root user

The docker daemon binds to a Unix socket instead of a TCP port. By

default that Unix socket is owned by the user root and other users can

only access it using sudo. The docker daemon always runs as the root

user.

If you don’t want to use sudo when you use the docker command, create

a Unix group called docker and add users to it. When the docker daemon

starts, it makes the ownership of the Unix socket read/writable by the

docker group.

答案顯而易見,要不用root使用者,要不建立一個名為docker的使用者組,并把你需要使用docker的非root使用者添加到該組中,如果還不會搞,繼續往下看。

方法1:

使用sudo擷取管理者權限,運作docker指令,這個方法在通過腳本執行docker指令的時候會有很多局限性

方法2:

docker守護程序啟動的時候,會預設賦予名為docker的使用者組讀寫Unix socket的權限,是以隻要建立docker使用者組,并将目前使用者加入到docker使用者組中,那麼目前使用者就有權限通路Unix socket了,進而也就可以執行docker相關指令

sudo groupadd docker #添加docker使用者組

sudo gpasswd -a $USER docker #将登陸使用者加入到docker使用者組中

newgrp docker #更新使用者組

阿裡雲雙11伺服器一折起