使用非 root 用户且带有用户命名空间映射的 docker 命令:权限错误

使用非 root 用户且带有用户命名空间映射的 docker 命令:权限错误

我想使用docker build非 root 权限构建 docker 镜像。

我关注了官方文档设置用户命名空间重新映射,但是当我运行docker image ls(或docker build -t myapp .docker run hello-world)时显示以下错误:

permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/json": dial unix /var/run/docker.sock: connect: permission denied

按照本节中的说明在守护进程上启用 userns-remap,我已"userns-remap": "default"在 中配置/etc/docker/daemon.json,并在/etc/subuid和中为该用户创建了范围/etc/subgid

docker 守护进程正在运行,通过 systemd 启动,日志文件显示用户已启用命名空间dockremap

level=info msg="User namespaces: ID ranges will be mapped to subuid/subgid ranges of: dockremap"
level=info msg="[graphdriver] using prior storage driver: overlay2"
level=info msg="Loading containers: start."
level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"
level=info msg="Loading containers: done."
level=warning msg="Not using native diff for overlay2, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled" storage-driver=overlay2
level=info msg="Docker daemon" commit=659604f9ee graphdriver=overlay2 version=24.0.2
level=info msg="Daemon has completed initialization"
level=info msg="API listen on /run/docker.sock"
Started Docker Application Container Engine.

但是,当我以普通用户身份运行 docker 命令时,会导致上面显示的权限错误。

错误中提到的文件的权限:

0 srw-rw---- 1 root docker 0 Jul 14 13:35 /var/run/docker.sock

我是否误解了说明,docker 命令必须由用户运行dockremap?但是,以下内容不会输出任何内容: 。此外,即使设置了密码,sudo su dockremap -c "docker image ls"我也无法以用户身份登录。dockremap

所以我的问题是:按照文档中的设置后我应该期待什么,以及如何在docker没有 root 的情况下使用该命令,特别是构建图像?

相关内容