问题
[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 套接字权限是一种快速但不安全的解决方法,建议谨慎使用。

1万+

被折叠的 条评论
为什么被折叠?



