
docker build
ルート権限なしで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
特にイメージを構築するために、ルートなしでコマンドを使用するにはどうすればよいのかということです。