天天看點

centos sudo不能運作_如何在Linux上以非root使用者運作Docker

在Ubuntu上安裝Docker非常容易! 任何人,甚至新手也可以在15分鐘内安裝好它。安裝好Docker後,我注意到大多數的Docker操作不能通過普通使用者進行。我必須要以root使用者或者sudo來運作。每當我嘗試以非root或者不适用sudo運作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.40/version: dial unix /var/run/docker.sock: connect: permission denied
           

例如,當我想要使用下面的指令檢視Docker版本:

$ docker version
           

然後,我會得到下面的錯誤資訊:

Client: Docker Engine - CommunityVersion: 19.03.8API version: 1.40Go version: go1.12.17Git commit: afacb8b7f0Built: Wed Mar 11 01:25:46 2020OS/Arch: linux/amd64Experimental: falseGot 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
           

但是當我使用sudo權限運作指令時:

$ sudo docker version
           

它會顯示目前安裝的Docker版本以及更多的資訊:

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
           
centos sudo不能運作_如何在Linux上以非root使用者運作Docker

在檢視Docker文檔後,我意識到Docker的daemon預設是連接配接到了一個Unix socket而不是TCP端口。由于Unix socket屬于root使用者,Docker daemon将隻能通過root使用者運作。是以普通使用者不能執行大多數Docker指令。

如果你想以非root使用者在Linux上運作Docker,你需要通過下面的步驟進行實作。我在Ubuntu 18.04伺服器上進行了測試,他可以很好地工作! 同樣他也應該能在其它Linux發行版上良好運作。

在Linux上以非root使用者運作Docker

要解決Docker權限不足的問題并以非root使用者使用Docker,使用下面的指令建立一個"docker"使用者組:

$ sudo groupadd docker
           

下一步,将你的使用者添加到docker組中:

$ sudo usermod -aG docker $USER
           

在将使用者添加到docker組後,登出會話然後重新登入以使得設定生效。

或者,也可以通過下面的指令來将改變應用到組:

$ newgrp docker
           

從現在開始,普通使用者也可以不适用sudo權限運作Docker了。

我們以普通使用者運作下面的指令:

$ docker version$ docker run hello-world
           

輸出示例:

centos sudo不能運作_如何在Linux上以非root使用者運作Docker

看到了嗎?我可以這些指令我都可以在不适用sudo的情況下運作。

有時,當你在将使用者添加到Docker組前已經通過sudo權限運作了一些Docker指令,你可能會看到下面的錯誤。

WARNING: Error loading config file: /home/user/.docker/config.json -stat /home/user/.docker/config.json: permission denied
           

上面的錯誤表明你的~/.docker/目錄因為sudo指令而具有不正确的權限。要解決這個問題,你需要通過下面的指令來改變目錄所有權:

$ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R$ sudo chmod g+rwx "$HOME/.docker" -R
           

登出再登入來使其生效。

如果這仍不能解決問題,你也許需要删掉~/.docker/目錄。它會在後面被自動生成,不過這樣你會失去一所有的自定義設定。

希望這對你有幫助。

往期文章

Linux下制作系統的U盤啟動盤

Linux下如何拼接PDF檔案

Linux下挂載使用Windows的NTFS檔案系統

Quantum ESPRESSO教程之電子局域函數計算(Pymatflow篇)

本文譯自: How To Run Docker As Non-root User In Linux

譯者: 生材有道

校對: OpenView

原文連結: https://www.ostechnix.com/how-to-run-docker-as-non-root-user-in-linux/

原文及本文遵循: [CC BY-NC協定]