docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run

问题

[acxu@app03 jenkins]$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[acxu@app03 jenkins]$ docker run -d \
>   --name jenkins \
>   -p 6080:8080 -p 50000:50000 \
>   -v jenkins_home:/var/jenkins_home \
>   jenkins/jenkins:lts
docker: Error response from daemon: Conflict. The container name "/jenkins" is already in use by container "824d7c65ff36c250c717f2083c72e2d03c882e704c6ffe79db111dfebba299a3". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
[acxu@app03 jenkins]$

问题原因

报错信息提示 permission denied,说明当前用户 acxu 没有权限访问 Docker 的守护进程套接字(/var/run/docker.sock)。
这是因为 Docker 默认需要超级用户权限运行,非 root 用户无法直接操作 Docker。

问题解决

以下是解决方案的步骤:

方法 1:使用 sudo 运行 Docker 命令

因为非超级用户没有访问权限,所以可以使用 sudo 运行 Docker 命令:

sudo docker run -d \
  --name jenkins \
  -p 8080:8080 -p 50000:50000 \
  -v jenkins_home:/var/jenkins_home \
  jenkins/jenkins:lts

但每次运行 Docker 命令都需要加 sudo,这可能不方便。如果希望无需 sudo,请参阅方法 2。

问题解决

以下是解决方案的步骤:

方法 2:将当前用户添加到 Docker 用户组

检查是否存在 docker 组
运行以下命令检查系统中是否有 docker 组:

cat /etc/group | grep docker

如果没有结果,说明没有 docker 组,可以手动创建:

sudo groupadd docker

将用户添加到 docker 组
将当前用户(例如 acxu)添加到 docker 组:

sudo usermod -aG docker $USER

重新登录或重启系统
修改用户组后,需要重新登录才能生效。如果希望立即生效,可以运行:

newgrp docker

验证是否生效
重新运行 Docker 命令,确保不需要 sudo 即可运行:

docker ps

问题解决

以下是解决方案的步骤:

方法 3:更改 Docker 套接字权限(不推荐)

可以修改 /var/run/docker.sock 的权限,让所有用户都能访问。但这种方法可能存在安全隐患,不推荐在生产环境中使用。

sudo chmod 666 /var/run/docker.sock

验证问题解决
执行以下命令验证是否解决问题:

docker run -d \
  --name jenkins \
  -p 8080:8080 -p 50000:50000 \
  -v jenkins_home:/var/jenkins_home \
  jenkins/jenkins:lts

如果命令成功运行,并且可以通过 docker ps 查看到正在运行的 Jenkins 容器,说明问题已经解决。

问题解决

以下是解决方案的步骤:

总结

如果临时需要权限,可以用 sudo 运行 Docker 命令。
如果经常使用 Docker,推荐将用户添加到 docker 组以避免频繁使用 sudo。
修改 Docker 套接字权限是一种快速但不安全的解决方法,建议谨慎使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值