在 CentOS 上使用 Docker,“设权限”通常分为几种常见场景,我按最常见的情况给你说明,你可以对号入座。
默认情况下只有 root 能执行 docker 命令,普通用户会报:
permission denied while trying to connect to the Docker daemon socket
sudo usermod -aG docker 你的用户名
然后退出重新登录(或重启):
newgrp docker
验证:
docker ps
✅ 推荐做法(安全、方便)
sudo chmod 666 /var/run/docker.sock
⚠️ 风险:任何用户都能控制 Docker(相当于 root)
docker run -u 1000:1000 nginx
RUN useradd -m appuser
USER appuser
CentOS 有 SELinux,经常导致权限拒绝。
:z 或 :Zdocker run -v /data:/data:z nginx
setenforce 0
semanage fcontext -a -t container_file_t "/data(/.*)?"
restorecon -Rv /data
docker run --cap-add NET_ADMIN nginx
或限制:
docker run --cap-drop ALL nginx
编辑:
sudo systemctl edit docker
示例:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --authorization-plugin=...
| 需求 | 做法 |
|---|---|
| 普通用户用 docker | usermod -aG docker 用户 |
| 容器无权限 | -u 或 Dockerfile USER |
| 挂载目录失败 | :z 或 SELinux |
| 安全加固 | --cap-drop |
如果你能说清楚是 哪种权限问题(用户?目录?容器?挂载?),我可以直接给你精确命令。