Docker Composeを含むPodman - ユーザーとして実行しますか?

Docker Composeを含むPodman - ユーザーとして実行しますか?

Podmanを使用しようとしていますdocker-composeこれこれでサポートされます。指示を実行すると root で実行するとソケットが機能しますが、ユーザーとして実行すると次のような結果が表示されます。

unix:///var/run/docker.sock から Docker デーモンソケットへの接続中に権限が拒否されました。 "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json ?all= 1&filters インポート" =%7B%22label%22%3A%7B%22com.docker.compose.project%3Dproject% 22%3Atrue%7D%7D": unix 呼び出し /var/run/docker.sock: 接続: 権限の拒否を拒否

podmanユーザー権限で使用できますか?docker-composeそれともルートでなければなりませんか?

編集する

docker グループを追加し、私のユーザーをここに追加して再起動して、変更が適用されることを確認しました。

[grant@rockylinux docker-compose-files]$ ./compose.sh setup --project
Pass: Docker compose version is 2.15.1.
Running docker-compose --project-directory /home/grant/project -f /home/grant/project/docker-compose-files/docker-compose.yml --profile project up  -d
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/containers/json?all=1&filters=%7B%22label%22%3A%7B%22com.docker.compose.project%3Dproject%22%3Atrue%7D%7D": dial unix /var/run/docker.sock: connect: permission denied
[grant@rockylinux docker-compose-files]$ cat /etc/group
...SNIP...
grant:x:1000:
docker:x:1001:grant

編集2

カールコマンドは上記のブログ記事でテストされました。ルートとしては機能しますが、ユーザーとしては機能しません。

[grant@rockylinux docker-compose-files]$ curl -H "Content-Type: application/json" --unix-socket /var/run/docker.sock http://localhost/_ping
curl: (7) Couldn't connect to server
[grant@rockylinux docker-compose-files]$ sudo curl -H "Content-Type: application/json" --unix-socket /var/run/docker.sock http://localhost/_ping
OK

答え1

ユーザーとして実行するには、podmanを設定する必要があります。

  1. systemctl enable podmanPodmanを実行するように設定した場合systemctl disable --now podman podman.socket。以前にインストールした場合は、からのソフトリンクがpodman-dockerルートで実行されなくなりました。/var/run/docker.sock/run/podman/podman.sockpodman
  2. 次に、ユーザーサービスを使用するには、podmanを設定する必要がありますsystemctl enable --now --user podman podman.socket。にソケットが作成されます/run/user/1000/podman/podman.sock。ソケットはユーザー所有であることに注意してください。バラよりここユーザーサービスの詳細です。 TLDR:システム起動時にサービスを実行するのではなく、ユーザーがログインしたときにサービスを実行します。
  3. DOCKER_HOST最後に、環境変数を次のように設定する必要があります。新しいソケットを指します。。を使用してこれを行うことができますexport DOCKER_HOST=unix:///run/user/1000/podman/podman.sock警告する:パスは異なる場合があります。 Podmanでどのソケットを使用しているかを確認できますpodman info --format '{{.Host.RemoteSocket.Path}}'

デバッグが必要な場合は、podmanサービスを介してデバッグ出力を取得できますpodman --log-level=debug system service -t0。以下を使用してソケット自体への接続を確認できます。curl --unix-socket /run/user/1000/podman/podman.sock -X GET http://d/version`[d]`

答え2

はい、ユーザー権限を使用してDocker ComposeでPodmanを使用できます。表示されるエラーメッセージは、コマンドを実行しているユーザーにDockerデーモンソケットにアクセスする権限がないことを示します。この問題を解決するには、ユーザーを「docker」グループに追加すると、ソケットにアクセスするために必要な権限が付与されます。

次のコマンドを実行してこれを実行できます。

sudo usermod -aG docker yourusername

変更を適用するには、ログアウトして再度ログインする必要があります。その後、ルートでなくてもPodmanを使用してDocker Composeコマンドを実行できます。

関連情報