我正在用Podman测试docker-compose,根据这的说法,它现在已经被支持了。我运行这些指令,并且在作为root用户运行时确实可以按下套接字,但是当我尝试作为用户运行时,我得到:
在尝试连接到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“:拨号unix/var/run/docker.sock:连接:拒绝权限时拒绝访问Docker守护进程套接字时拒绝的权限
是否可以将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在上述博客文章中测试curl命令。它作为根用户工作,而不是作为用户工作。
[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发布于 2023-02-08 14:42:04
您必须设置podman才能作为用户运行。
systemctl enable podman运行,则需要使用systemctl disable --now podman podman.socket进行反向操作。如果您以前安装了podman-docker,您会注意到从/var/run/docker.sock到/run/podman/podman.sock的软链接现在将中断,因为podman现在不再在root下运行。systemctl enable --now --user podman podman.socket中使用用户服务。这将在/run/user/1000/podman/podman.sock上创建一个套接字。注意,这个套接字是用户拥有的。有关用户服务的详细信息,请参阅这里。TLDR:它不是在系统启动时运行服务,而是在用户登录时运行它。DOCKER_HOST环境变量设置为指向我们的新插座。您可以使用export DOCKER_HOST=unix:///run/user/1000/podman/podman.sock来完成这个任务。警告:您的路径可能有所不同。您可以检查套接字podman与podman info --format '{{.Host.RemoteSocket.Path}}'一起使用的情况。如果需要调试,可以使用podman --log-level=debug system service -t0从podman服务获得调试输出。您可以使用curl --unix-socket /run/user/1000/podman/podman.sock -X GET http://d/version`[d]`检查到套接字本身的连接情况。
https://unix.stackexchange.com/questions/731645
复制相似问题