You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RHEL中Docker 17.x权限报错解决及以其他用户启动守护进程

解决Docker权限拒绝问题 & 以其他用户启动Docker守护进程

一、解决docker version权限拒绝异常

你碰到的这个报错,本质是当前用户没有权限访问Docker守护进程的Unix套接字(/var/run/docker.sock)——默认只有root用户和docker组的成员能操作这个套接字。按下面的步骤就能搞定:

  • 先创建docker用户组(如果系统里还没有的话):
    sudo groupadd docker
    
  • 把当前用户加入docker组:
    sudo usermod -aG docker $USER
    
  • 让组权限立即生效(不用重新登录):
    newgrp docker
    
  • 现在再执行docker version,就能正常显示客户端和守护进程的版本信息了:
    docker version
    

要是你重新登录系统,这个权限会永久生效,之后不用再跑newgrp docker。

二、以其他用户身份启动Docker守护进程

Docker守护进程(dockerd)默认用root用户运行,因为它需要访问内核级资源(比如网络、存储设备)。如果确实要换其他用户启动,得做这些配置(注意:这种方式容易引发各类权限问题,只推荐在特殊场景下用):

  1. 创建一个专门的系统用户(用来运行Docker守护进程,禁止交互式登录):
    sudo useradd -r -s /sbin/nologin dockerd-user
    
  2. 修改Docker相关目录的所有权,让这个用户能访问:
    sudo chown -R dockerd-user:dockerd-user /var/lib/docker
    sudo chown dockerd-user:dockerd-user /var/run/docker.sock
    
  3. 修改Docker的systemd服务配置文件(通常路径是/usr/lib/systemd/system/docker.service):
    找到ExecStart行,加入--user dockerd-user参数,修改后类似这样:
    ExecStart=/usr/bin/dockerd --user dockerd-user -H fd:// --containerd=/run/containerd/containerd.sock
    
  4. 重新加载systemd配置并重启Docker服务:
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
  5. 验证Docker守护进程的运行用户:
    ps aux | grep dockerd
    
    输出里应该能看到dockerd-user作为运行用户。

额外提醒:用非root用户跑Docker守护进程,大概率会遇到无法创建网络、挂载卷、访问设备这类权限问题,生产环境里一般还是推荐用默认的root用户运行。

内容的提问来源于stack exchange,提问作者Learn Hadoop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:38:48