非root用户运行Docker命令的操作步骤

 更新时间:2025年04月24日 09:04:45   作者:李博帅  
在企业环境中,为了保证系统安全和权限的合理分配,通常不允许直接使用 root 用户执行 Docker 命令,本文将介绍如何配置普通用户,使其能够无须 root 权限便可执行 Docker 命令,从而提升安全性和操作便捷性,需要的朋友可以参考下

背景与目的

默认情况下,Docker 进程的管理权限绑定在 root 用户上。直接使用 root 用户执行 Docker 命令存在安全隐患,不利于权限控制和审计。为解决此问题,推荐方式是将需要执行 Docker 命令的普通用户添加到 Docker 用户组(一般为 docker 组),使其拥有对 Docker.sock 的访问权限,从而无须提升权限即可操作 Docker。

操作步骤详解

下面详细说明如何配置非 root 用户执行 Docker 命令。

1. 确认或创建 docker 用户组

Docker 的套接字文件 /var/run/docker.sock 默认会被分配给 docker 用户组。如果该组不存在,需要手动创建。

# 查看系统是否存在docker用户组
getent group docker

# 如果没有输出,说明docker组不存在,执行下面命令创建docker组
sudo groupadd docker

说明: 使用 getent group docker 代替 cat /etc/group | grep docker,更为高效且语言无关。

2. 检查并修改 Docker 套接字的用户组归属

由于 Docker 的套接字默认位于 /var/run/docker.sock,确认该文件所属用户组是否是 docker,如果不是,需要修改。

# 查看docker.sock的权限和所属用户组
ls -l /var/run/docker.sock

# 示例如下,输出类似:
# srw-rw---- 1 root docker 0 Jun  1 10:00 /var/run/docker.sock

# 若所属组不是docker,则执行:
sudo chgrp docker /var/run/docker.sock

建议: Docker 服务重启后,套接字权限通常会自动恢复,若遇到权限变化问题,可考虑使用 docker.service 的配置覆盖。

3. 将目标用户添加到 docker 用户组

将需要执行 Docker 命令的普通用户添加到 docker 组。

# 以当前用户为例
sudo usermod -aG docker ${USER}

注意: -aG 表示向附加组中添加用户,避免覆盖已有组。

4. 重新加载用户组权证(使配置即时生效)

为了立即使用户组权限生效,可以选择以下两种方式:

  • 重新登录用户会话,注销并重新登录
  • 或执行 newgrp docker 切换当前 shell 的组权限
newgrp docker

效果与验证

完成配置后,可以通过如下命令验证用户的组权限及 Docker 命令执行能力。

1. 查看用户所属组

groups ${USER}
# 输出中应包含docker组

2. 测试执行 docker 命令

docker ps

若没有产生权限错误,且正常显示容器列表,说明配置成功。

常见问题排查与建议

  • 权限不足报错确认用户是否添加到 docker 用户组,并重新登录 Session。

  • Docker 服务未启动运行 sudo systemctl status docker,确认 Docker 正常运行。

  • docker.sock 权限会重置某些系统中,重启 Docker 服务后 /var/run/docker.sock 的权限会被重置。可通过创建 systemd override 文件固定权限:

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/override.conf <<EOF
[Service]
ExecStartPost=/bin/chgrp docker /var/run/docker.sock
ExecStartPost=/bin/chmod 660 /var/run/docker.sock
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker
  • 安全建议将用户添加至 docker 组等同于给予 root 权限,请仅对可信用户配置此权限,避免安全风险。

总结

通过将普通用户加入 docker 用户组,可以避免使用 root 身份执行 Docker 命令,提升系统安全性和运维便利性。掌握以上操作步骤和注意事项,有助于企业级 Docker 运行环境的规范管理。

以上就是非root用户运行Docker命令的操作步骤的详细内容,更多关于非root用户运行Docker命令的资料请关注脚本之家其它相关文章!

相关文章

  • 总结Docker不适合部署数据库的7大原因

    总结Docker不适合部署数据库的7大原因

    在本篇文章里小编给大家整理一篇关于Docker不适合部署数据库的7大原因,有兴趣的朋友们可以参考学习下。
    2021-01-01
  • Ollma本地部署Qwen2.5 14B的详细过程(不使用docker)

    Ollma本地部署Qwen2.5 14B的详细过程(不使用docker)

    本文介绍了如何在不使用Docker的情况下部署Ollama模型和Open-webui实现可视化界面,Ollama模型通过命令行操作,包括启动、创建、运行等,Open-webui则需要安装Anaconda环境,安装并启动服务后,通过浏览器访问即可使用,感兴趣的朋友跟随小编一起看看吧
    2024-11-11
  • 在Docker容器中使用Arthas的详细步骤

    在Docker容器中使用Arthas的详细步骤

    本文不是介绍arthas怎么用的。这里要说的是,如何在我们的docker容器中,使用arthas,对如何在Docker容器中使用Arthas相关知识感兴趣的朋友一起看看吧
    2021-12-12
  • docker的镜像存放地址在哪里

    docker的镜像存放地址在哪里

    Docker镜像(Image)是用于创建 Docker 容器的模板,下面这篇文章主要给大家介绍了关于docker的镜像存放地址在哪里的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • Dockerfile中multi-stage(多阶段构建)详解

    Dockerfile中multi-stage(多阶段构建)详解

    在2017年5月3日即将发行的 Docker 17.05.0-ce 中,Docker 官方提供了简便的多阶段构建 (multi-stage build) 方案,下面这篇文章主要给大家介绍了关于Dockerfile中multi-stage(多阶段构建)的相关资料,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2018-03-03
  • Docker如何搭建私有仓库

    Docker如何搭建私有仓库

    文章介绍了如何搭建私有仓库并使用Docker进行镜像的管理和推送,首先,搭建私有仓库并配置非HTTPS访问(适用于Ubuntu、Debian和CentOS),然后,使用Docker命令标记、推送和拉取镜像,最后,通过curl命令查看仓库中的镜像列表
    2025-03-03
  • docker运行异构镜像详解

    docker运行异构镜像详解

    介绍了在不同CPU架构下运行Docker镜像时遇到的问题及解决方法,作者分享了由于银行使用鲲鹏系统(ARM架构)导致Docker容器运行失败的经历,解决方法包括启用`--platform`参数、安装`qemu-user-static`及`binfmt_misc`
    2024-12-12
  • Gogs+Jenkins+Docker 自动化部署.NetCore的方法步骤

    Gogs+Jenkins+Docker 自动化部署.NetCore的方法步骤

    这篇文章主要介绍了Gogs+Jenkins+Docker 自动化部署.NetCore,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-06-06
  • docker如何删除悬空镜像

    docker如何删除悬空镜像

    文章介绍了如何使用Docker命令删除悬空镜像,以提高服务器空间利用率,通过使用docker image命令结合filter和awk工具,可以过滤出没有Tag的镜像,并将其删除,总结了两种方法,一种是通过管道和awk命令,另一种是使用更简单的docker rmi命令
    2025-02-02
  • docker安装drone的实现示例

    docker安装drone的实现示例

    Drone是一款基于Docker的持续集成和持续部署平台,可以帮助开发者自动化构建、测试和部署应用程序,本文主要介绍了docker安装drone的实现示例,感兴趣的可以了解一下
    2023-12-12

最新评论