我想使用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 的情况下使用该命令,特别是构建图像?