如何在Linux中以非root用户运行Docker?

译文
云计算 系统运维
在Ubuntu上安装Docker很容易!连新手都可以在15分钟内安装完毕。安装Docker后,我注意到无法以普通用户的身份执行大多数Docker操作。每次我都只好以“root”用户的身份或拥有“sudo”权限的情况下运行Docker。

【51CTO.com快译】在Ubuntu上安装Docker很容易!连新手都可以在15分钟内安装完毕。安装Docker后,我注意到无法以普通用户的身份执行大多数Docker操作。每次我都只好以“root”用户的身份或拥有“sudo”权限的情况下运行Docker。每当我尝试以非root用户的身份或在没有sudo权限的情况下运行Docker,都会出现以下错误:

  1. 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版本:

  1. $ docker version 

我还收到该错误消息:

  1. Client: Docker Engine - Community 
  2. Version: 19.03.8 
  3. API version: 1.40 
  4. Go version: go1.12.17 
  5. Git commit: afacb8b7f0 
  6. Built: Wed Mar 11 01:25:46 2020 
  7. OS/Arch: linux/amd64 
  8. Experimental: false 
  9. 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 

但是当我在拥有sudo权限的情况下运行同一命令时:

  1. $ sudo docker version 

它显示了当前安装的Docker版本的全部详细信息,如下所示。

  1. Client: Docker Engine - Community 
  2.  Version:           19.03.8 
  3.  API version:       1.40 
  4.  Go version:        go1.12.17 
  5.  Git commit:        afacb8b7f0 
  6.  Built:             Wed Mar 11 01:25:46 2020 
  7.  OS/Arch:           linux/amd64 
  8.  Experimental:      false 
  9. Server: Docker Engine - Community 
  10.  Engine: 
  11.   Version:          19.03.8 
  12.   API version:      1.40 (minimum version 1.12) 
  13.   Go version:       go1.12.17 
  14.   Git commit:       afacb8b7f0 
  15.   Built:            Wed Mar 11 01:24:19 2020 
  16.   OS/Arch:          linux/amd64 
  17.   Experimental:     false 
  18.  containerd: 
  19.   Version:          1.2.13 
  20.   GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429 
  21.  runc: 
  22.   Version:          1.0.0-rc10 
  23.   GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd 
  24.  docker-init: 
  25.   Version:          0.18.0 
  26.   GitCommit:        fec3683 

如何在Linux中以非root用户运行Docker?

我在Docker文档页面中搜索后,意识到Docker守护程序默认情况下绑定到Unix套接字而不是TCP端口。由于该Unix套接字归root用户拥有,Docker守护程序将只能以root用户的身份运行。因此,普通用户无法执行大多数Docker命令。

如果你想要在Linux中以非root用户的身份运行Docker,需要执行以下步骤。我在Ubuntu 18.04服务器上进行了测试,效果很好!它也应该适用于其他Linux发行版。

在Linux中以非root用户的身份运行Docker

要解决Docker权限被拒绝错误,并以非root用户的身份使用Docker,请使用以下命令创建一个名为“docker”的组:

  1. $ sudo groupadd docker 

接下来,将你的用户添加到docker组:

  1. $ sudo usermod –aG docker $ USER 

将用户添加到docker组后,注销并重新登录,使更改生效。

或者,运行以下命令,对组进行更改:

  1. $ newgrp docker 

从现在开始,普通用户(非root用户)可以在没有sudo权限的情况下使用Docker。

不妨以普通用户的身份运行以下命令:

  1. $ docker version  
  2. $ docker run hello-world 

示例输出:

如何在Linux中以非root用户运行Docker?

看到了吗?现在我在没有sudo权限的情况下可以运行这两个Docker命令。

假设你在将用户添加到Docker组之前已经在拥有“sudo”权限的情况下运行了几个Docker命令,可能会看到如下所示的错误:

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

上述错误信息表明,由于“sudo”命令,你的~/.docker/目录是在拥有不正确权限的情况下创建的。为了解决这个问题,使用以下命令更改该目录归属和权限:

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

注销、重新登录,使之生效。

如果这仍解决不了问题,你可能需要删除~/.docker/目录。该目录会自动重新创建,但你会失去所有自定义设置,如果之前有的话。

但愿本文对你有所帮助。

原文标题:How To Run Docker As Non-root User In Linux,作者:SK

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

责任编辑:未丽燕 来源: 51CTO.com
相关推荐

2021-02-17 09:16:58

PodmanLinuxDocker

2018-10-26 16:20:27

PodmanrootLinux

2021-12-27 11:10:22

DockerrootLinux

2020-09-22 11:20:12

UbuntuLinuxroot

2023-10-19 11:27:22

Linux记账工具

2011-04-19 16:09:35

LinuxpythonMySQLdb

2015-07-17 16:21:42

Linux端口

2022-01-17 13:34:45

MySQLLinux数据库

2020-09-19 18:03:42

Docker

2015-08-17 10:16:00

CentOSDocker命令root

2017-03-17 15:25:54

LinuxMySQLroot密码

2018-12-27 13:35:11

MySQLMySQL 8重置密码

2020-08-31 07:30:28

UbuntuRoot密码

2017-12-06 09:11:48

Linux用户组管理用户

2019-11-18 10:00:05

Linux桌面添加用户

2018-12-21 19:30:28

Windows 10Windows管理员身份

2022-01-21 10:58:39

JavaScriptGolangPython

2017-02-16 10:15:43

Windows7docker变量

2021-04-04 22:56:47

Linux循环用户

2017-02-06 18:00:26

Linuxsudo命令
点赞
收藏

51CTO技术栈公众号