📌  相关文章
📜  unix:var run docker.sock:发布 http:%2Fvar%2Frun%2Fdocker.sock v1.24 容器创建:拨打 unix var run docker.sock:connect:权限被拒绝. (1)

📅  最后修改于: 2023-12-03 15:20:54.301000             🧑  作者: Mango

Docker 运行时连接权限被拒绝

问题描述

在使用 Docker 时,当尝试连接到 Unix 套接字文件 unix:///var/run/docker.sock 时,可能会遇到以下错误:

docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))

或者类似的提示:

dial unix /var/run/docker.sock: connect: permission denied

这是因为没有足够的权限来连接该套接字文件。

解决方案

有几个解决方案可以尝试:

1.使用 sudo

最简单的解决方案是使用 sudo 命令以 root 用户身份运行 Docker 命令。例如:

sudo docker ps

这将在具有 Docker 访问权限的帐户下运行 Docker 命令。

2.添加用户到 docker 组中

可以将用户添加到 docker 组中,以便对 Docker 命令具有足够的权限。

首先,检查当前用户是否已添加到该组中。如果用户不在该组中,请按以下步骤操作:

  1. 打开终端,并运行以下命令以将当前用户添加到 docker 组中:

    sudo usermod -aG docker $USER
    

    $USER 是当前用户的用户名。

  2. 将更改应用于当前会话。在 Bash 中,可以运行以下命令:

    newgrp docker
    

    这将在当前会话中刷新组成员身份。

  3. 确认更改是否已成功应用。可以通过运行以下命令来检查当前用户是否在 docker 组中:

    id -nG
    

    如果用户在该组中,则 docker 组的名称将包含在输出中。

3.修改套接字文件的权限

还可以将套接字文件的权限更改为使当前用户可以连接:

sudo chmod 666 /var/run/docker.sock

这将为文件分配读写权限,以便 Docker 命令能够连接到套接字文件。

结论

以上解决方案应该能够解决连接 Docker 运行时权限被拒绝的问题。通过使用 sudo 命令、添加用户到 docker 组中或更改套接字文件的权限,用户应该能够正确地连接到 Unix 套接字文件并运行 Docker 命令。