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