别的可以参考,但最好别改成app用户,也别用 userns-remap,权限问题很大。
如果要让非 root 用户(app 用户)管理 Docker 目录,需要做一些额外配置。以下是详细步骤:
首先将 app 用户添加到 docker 用户组:
# 添加用户到 docker 组
sudo usermod -aG docker app
# 重新登录以使组权限生效
# 或者运行下面的命令立即生效
newgrp docker
创建新目录并设置权限:
# 创建新目录
sudo mkdir -p /data/app/docker
# 更改目录所有权
sudo chown -R app:docker /data/app/docker
# 设置适当的权限
sudo chmod 770 /data/app/docker
配置 Docker daemon:
# 编辑或创建 daemon.json
sudo nano /etc/docker/daemon.json
# 添加以下内容
{
"data-root": "/data/app/docker",
"userns-remap": "app"
}
创建用户命名空间映射(这一步很重要):
# 编辑 /etc/subuid
sudo nano /etc/subuid
# 添加下面这行(将 1000 替换为 app 用户的实际 UID)
app:1000:65536
# 编辑 /etc/subgid
sudo nano /etc/subgid
# 添加下面这行(将 1000 替换为 app 用户的实际 GID)
app:1000:65536
重启 Docker 服务:
sudo systemctl restart docker
验证配置:
# 检查 Docker 信息
docker info
# 尝试运行容器
docker run hello-world
注意事项:
使用 userns-remap 会影响一些需要特权访问的容器
如果遇到权限问题,可以检查:
# 查看 app 用户的 UID
id app
# 查看 Docker 目录权限
ls -la /data/app/docker
如果之前有运行的容器和镜像,在更改存储位置后需要重新拉取
您要我详细解释某个步骤吗?或者需要帮助排查可能遇到的问题?