新聞中心
如何在Linux中以非root用戶運(yùn)行docker?
譯文
作者:布加迪編譯 2020-04-17 08:00:22
云計(jì)算
系統(tǒng)運(yùn)維 在Ubuntu上安裝Docker很容易!連新手都可以在15分鐘內(nèi)安裝完畢。安裝Docker后,我注意到無(wú)法以普通用戶的身份執(zhí)行大多數(shù)Docker操作。每次我都只好以“root”用戶的身份或擁有“sudo”權(quán)限的情況下運(yùn)行Docker。

創(chuàng)新互聯(lián)建站主營(yíng)遼陽(yáng)網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶APP軟件開(kāi)發(fā),遼陽(yáng)h5小程序開(kāi)發(fā)搭建,遼陽(yáng)網(wǎng)站營(yíng)銷推廣歡迎遼陽(yáng)等地區(qū)企業(yè)咨詢
【51CTO.com快譯】在Ubuntu上安裝Docker很容易!連新手都可以在15分鐘內(nèi)安裝完畢。安裝Docker后,我注意到無(wú)法以普通用戶的身份執(zhí)行大多數(shù)Docker操作。每次我都只好以“root”用戶的身份或擁有“sudo”權(quán)限的情況下運(yùn)行Docker。每當(dāng)我嘗試以非root用戶的身份或在沒(méi)有sudo權(quán)限的情況下運(yùn)行Docker,都會(huì)出現(xiàn)以下錯(cuò)誤:
- 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.40/version: dial unix /var/run/docker.sock: connect: permission denied
比如說(shuō),我想使用以下命令以普通用戶的身份查看Docker版本:
- $ docker version
我還收到該錯(cuò)誤消息:
- Client: Docker Engine - Community
- Version: 19.03.8
- API version: 1.40
- Go version: go1.12.17
- Git commit: afacb8b7f0
- Built: Wed Mar 11 01:25:46 2020
- OS/Arch: linux/amd64
- Experimental: false
- 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.40/version: dial unix /var/run/docker.sock: connect: permission denied
但是當(dāng)我在擁有sudo權(quán)限的情況下運(yùn)行同一命令時(shí):
- $ sudo docker version
它顯示了當(dāng)前安裝的Docker版本的全部詳細(xì)信息,如下所示。
- Client: Docker Engine - Community
- Version: 19.03.8
- API version: 1.40
- Go version: go1.12.17
- Git commit: afacb8b7f0
- Built: Wed Mar 11 01:25:46 2020
- OS/Arch: linux/amd64
- Experimental: false
- Server: Docker Engine - Community
- Engine:
- Version: 19.03.8
- API version: 1.40 (minimum version 1.12)
- Go version: go1.12.17
- Git commit: afacb8b7f0
- Built: Wed Mar 11 01:24:19 2020
- OS/Arch: linux/amd64
- Experimental: false
- containerd:
- Version: 1.2.13
- GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
- runc:
- Version: 1.0.0-rc10
- GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
- docker-init:
- Version: 0.18.0
- GitCommit: fec3683
我在Docker文檔頁(yè)面中搜索后,意識(shí)到Docker守護(hù)程序默認(rèn)情況下綁定到Unix套接字而不是TCP端口。由于該Unix套接字歸root用戶擁有,Docker守護(hù)程序?qū)⒅荒芤詒oot用戶的身份運(yùn)行。因此,普通用戶無(wú)法執(zhí)行大多數(shù)Docker命令。
如果你想要在Linux中以非root用戶的身份運(yùn)行Docker,需要執(zhí)行以下步驟。我在Ubuntu 18.04服務(wù)器上進(jìn)行了測(cè)試,效果很好!它也應(yīng)該適用于其他Linux發(fā)行版。
在Linux中以非root用戶的身份運(yùn)行Docker
要解決Docker權(quán)限被拒絕錯(cuò)誤,并以非root用戶的身份使用Docker,請(qǐng)使用以下命令創(chuàng)建一個(gè)名為“docker”的組:
- $ sudo groupadd docker
接下來(lái),將你的用戶添加到docker組:
- $ sudo usermod –aG docker $ USER
將用戶添加到docker組后,注銷并重新登錄,使更改生效。
或者,運(yùn)行以下命令,對(duì)組進(jìn)行更改:
- $ newgrp docker
從現(xiàn)在開(kāi)始,普通用戶(非root用戶)可以在沒(méi)有sudo權(quán)限的情況下使用Docker。
不妨以普通用戶的身份運(yùn)行以下命令:
- $ docker version
- $ docker run hello-world
示例輸出:
看到了嗎?現(xiàn)在我在沒(méi)有sudo權(quán)限的情況下可以運(yùn)行這兩個(gè)Docker命令。
假設(shè)你在將用戶添加到Docker組之前已經(jīng)在擁有“sudo”權(quán)限的情況下運(yùn)行了幾個(gè)Docker命令,可能會(huì)看到如下所示的錯(cuò)誤:
- WARNING: Error loading config file: /home/user/.docker/config.json -
- stat /home/user/.docker/config.json: permission denied
上述錯(cuò)誤信息表明,由于“sudo”命令,你的~/.docker/目錄是在擁有不正確權(quán)限的情況下創(chuàng)建的。為了解決這個(gè)問(wèn)題,使用以下命令更改該目錄歸屬和權(quán)限:
- $ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
- $ sudo chmod g+rwx "$HOME/.docker" -R
注銷、重新登錄,使之生效。
如果這仍解決不了問(wèn)題,你可能需要?jiǎng)h除~/.docker/目錄。該目錄會(huì)自動(dòng)重新創(chuàng)建,但你會(huì)失去所有自定義設(shè)置,如果之前有的話。
但愿本文對(duì)你有所幫助。
文章名稱:如何在Linux中以非root用戶運(yùn)行Docker?
標(biāo)題網(wǎng)址:http://www.5511xx.com/article/djchhdc.html


咨詢
建站咨詢
