在沒有 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 的情況下使用該命令,尤其是建立映像?

相關內容