温馨提示×

Ubuntu Docker权限怎么给

小樊
39
2026-09-25 15:10:55
栏目: 智能运维

在 Ubuntu 上使用 Docker 时,“权限怎么给”通常分为几种常见场景。下面按最常见 → 进阶给你讲清楚。


一、最常见问题:没有权限运行 docker(permission denied)

报错示例

Got permission denied while trying to connect to the Docker daemon socket

原因

当前用户不在 docker 用户组

解决方法(推荐)

sudo usermod -aG docker $USER

然后注销并重新登录(或重启)

验证:

docker ps

✅ 不用每次加 sudo


二、以 root 身份运行容器(不推荐但常见)

docker run -it ubuntu bash

默认就是 root

如果你在容器里想切换用户:

useradd -m test
su test

三、给容器里的程序“特定权限”

1️⃣ 以特权模式运行(权限最大,危险)

docker run --privileged ubuntu

⚠️ 一般只在:

  • 网络工具
  • 监控系统
  • 特殊硬件访问

使用


2️⃣ 只给部分 Linux 权限(推荐)

docker run --cap-add NET_ADMIN ubuntu

常用 cap:

  • NET_ADMIN:网络管理
  • SYS_ADMIN:系统管理
  • SYS_PTRACE:调试

四、挂载宿主机目录的权限问题

问题

容器里无法写宿主目录

解决方式

方法 1:统一 UID(推荐)

docker run -v /data:/data -u $(id -u):$(id -g) ubuntu

方法 2:修改目录权限

sudo chmod -R 777 /data

(不安全,仅测试)


五、Docker Compose 给权限

services:
  app:
    image: ubuntu
    user: "1000:1000"
    privileged: false
    cap_add:
      - NET_ADMIN

六、systemd 相关权限(高级)

允许 Docker 访问宿主资源:

sudo systemctl enable docker
sudo systemctl start docker

总结(快速对照)

场景 做法
当前用户不能跑 docker usermod -aG docker $USER
容器需要 root 默认就是
需要系统权限 --cap-add
需要全部权限 --privileged
目录写不了 对齐 UID / 改权限

如果你能说一下具体场景(比如:Dockerfile、挂载、CI、K8s、某个报错),我可以直接给你精准命令。

0 踩