Car*_*res 168 docker docker-compose
我在我的机器上安装了Docker,我有Ubuntu操作系统.比我安装了docker,当我跑
sudo docker run hello-world
Run Code Online (Sandbox Code Playgroud)
一切都没问题,但是我想隐藏这个词sudo以使命令更加简短.
如果我没有单词写命令 sudo
docker run hello-world
Run Code Online (Sandbox Code Playgroud)
这显示如下:
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.35/containers/create: dial unix /var/run/docker.sock: connect: permission denied.See 'docker run --help'.
Run Code Online (Sandbox Code Playgroud)
当我尝试制作时,情况也是如此
docker-compose up
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
Gal*_*tor 260
升级后,我获得了拒绝许可.执行"mkb" 安装后步骤的步骤没有任何更改,因为我的用户已经在"docker"组中; 我重试了两次,没有成功.
在搜索时间之后,以下解决方案最终有效:
sudo chmod 666 /var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)
解决方案来自Olshansk.
看起来升级已经没有足够的"docker"组权限重新创建套接字.
问题: 这个硬chmod打开安全漏洞,每次重启后,这个错误一次又一次地启动,你必须每次都重新执行上面的命令.我想要一劳永逸的解决方案.为此你有两个问题:
1)SystemD的问题:套接字只能由所有者"root"和"root"组创建.您可以使用此命令检查此第一个问题:
ls -l /lib/systemd/system/docker.socket
Run Code Online (Sandbox Code Playgroud)
如果每一个都很好,你应该看到'root/docker'不是'root/root'.
2)图形登录问题:https://superuser.com/questions/1348196/why-my-linux-account-only-belongs-to-one-group 您可以使用此命令检查第二个问题:
groups
Run Code Online (Sandbox Code Playgroud)
如果一切正确,您应该在列表中看到docker组.如果没有尝试该命令
sudo su $USER -c groups
Run Code Online (Sandbox Code Playgroud)
如果你看到docker组,那是因为bug.
解决方案: 如果您设法获得图形登录的解决方法,则应该完成以下任务:
sudo chgrp docker /lib/systemd/system/docker.socket
sudo chmod g+w /lib/systemd/system/docker.socket
Run Code Online (Sandbox Code Playgroud)
但是如果你无法管理这个bug,那么一个不太糟糕的解决办法就是:
sudo chgrp $USER /lib/systemd/system/docker.socket
sudo chmod g+w /lib/systemd/system/docker.socket
Run Code Online (Sandbox Code Playgroud)
这项工作是因为您处于图形环境中,可能是计算机上唯一的用户.在这两种情况下你需要重启(或 sudo chmod 666 /var/run/docker.sock)
小智 190
如果要以非root用户身份运行docker,则需要将其添加到docker组.
创建docker组.
$ sudo groupadd docker
Run Code Online (Sandbox Code Playgroud)将您的用户添加到docker组.
$ sudo usermod -aG docker $USER
Run Code Online (Sandbox Code Playgroud)注销并再次登录并运行.
$ docker run hello-world
Run Code Online (Sandbox Code Playgroud)取自docker官方文档:https://docs.docker.com/install/linux/linux-postinstall/#manage-docker-as-a-non-root-user
tsv*_*iko 32
如果创建 docker 组并将用户添加到其中不起作用(最佳解决方案,如前面的答案中所述),那么这是第二好的替代方案:
sudo chown $USER /var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)
它的作用是将文件的所有权更改docker.sock为您的用户。
注意:使用 是一个非常糟糕的做法chmod 666,因为它授予几乎每个人访问和修改docker.sock文件的权限。
小智 22
只需要更改sock文件的权限即可。
sudo chmod 666 /var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)
这肯定会起作用。
小智 21
$ sudo groupadd docker
Run Code Online (Sandbox Code Playgroud)
$ sudo usermod -aG docker $USER
Run Code Online (Sandbox Code Playgroud)
3.将会话切换到Docker组
$newgrp - docker
Run Code Online (Sandbox Code Playgroud)
$docker run hello-world
Run Code Online (Sandbox Code Playgroud)
Md.*_*sen 15
sudo groupadd dockergrep -Po '^sudo.+:\K.*$' /etc/groupexport USER=demoUsersudo usermod -aG docker $USERnewgrp dockerdocker run hello-worldrebootsudo chmod 660 /var/run/docker.sock
小智 14
您可以随时尝试https://docs.docker.com/install/linux/linux-postinstall/ docs 中的Manage Docker as a non-root user段落。
执行此操作后,如果问题仍然存在,则可以运行以下命令来解决它:
sudo chmod 666 /var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)
0x3*_*bfc 13
docker组sudo usermod -aG docker $USER
Run Code Online (Sandbox Code Playgroud)
/var/run/docker.socksudo chmod 666 /var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)
Car*_*res 10
为了解决这个问题,我搜索了我的 docker 和 docker-compose 安装在哪里。就我而言,docker已/usr/bin/docker安装docker-compose在/usr/local/bin/docker-compose路径中。然后,我在终端中写下:
到码头工人:
sudo chmod +x /usr/bin/docker
Run Code Online (Sandbox Code Playgroud)
到docker-compose:
sudo chmod +x /usr/local/bin/docker-compose
Run Code Online (Sandbox Code Playgroud)
现在我不需要在命令中写入 docker 这个词sudo
/******************************************************** **********************/
勘误表:
@mkasberg 评论了这个问题的最佳解决方案。我引用评论:
That might work, you might run into issues down the road. Also, it's a security vulnerability. You'd be better off just adding yourself to the docker group, as the docs say. sudo groupadd docker, sudo usermod -aG docker $USER.
Docs: https://docs.docker.com/install/linux/linux-postinstall/
Qin*_*ang 10
在尝试连接到 unix:///var/run/docker.sock 上的 Docker 守护进程套接字时获得权限被拒绝:获取http://%2Fvar%2Frun%2Fdocker.sock/v1.40/images/json:拨号 unix /var/run/docker.sock: 连接:权限被拒绝
sudo chmod 666 /var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)
这解决了我的问题。
我用以下命令解决此错误:
$ sudo chmod 666 /var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)
让我先说一下,在本地开发过程中,这是一个非常适合我的解决方案,我来这里寻找,ubuntu docker permission error所以我将其留在这里。
我不拥有 unix 套接字,所以我放弃了它。
sudo chown $(whoami):$(whoami) /var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)
对于您的开发环境来说,另一个更持久的解决方案是修改 unix 套接字创建的用户所有权。这将为您的用户提供所有权,因此它将在重新启动之间保留:
sudo nano /etc/systemd/system/sockets.target.wants/docker.socket
Run Code Online (Sandbox Code Playgroud)
docker.socket:
[Unit]
Description=Docker Socket for the API
[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=YOUR_USERNAME_HERE
SocketGroup=docker
[Install]
WantedBy=sockets.target
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
129284 次 |
| 最近记录: |