docker run 设置root_如何在Linux上以非root用户运行Docker

1d940bd9cd305c830c3b6ad6d190f74f.png

在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:      falseServer: 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

093e8f0fe31e8b52f8f4665526005d90.png

在查看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
输出示例:

f57ea0ce33d27cc9f8287857273a84d4.png

看到了吗?我可以这些命令我都可以在不适用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/目录。它会在后面被自动生成,不过这样你会失去一所有的自定义设置。 希望这对你有帮助。

5c4ea5ee2de3d2ddb9521291c561f7f4.png

构建Slab模型,一条命令即可从命令行跟踪冠状病毒COVID-19最新统计数据Neofetch – 通过终端显示Linux系统信息一行命令构建Supercell,你值得拥有使用structflow更改晶体结构中原子的位置开源多物理场有限元软件ElmerLabPlot替代Origin用于科研绘图开源数学软件SageMath
本文译自: 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协议]

2f264aabaacdc70e291a1b9df550c52e.png

d2edbf3680f01bd6850c72225a5c03f9.gif

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值