首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Podman w/Docker作为用户编写-运行?

Podman w/Docker作为用户编写-运行?
EN

Unix & Linux用户
提问于 2023-01-13 17:14:14
回答 1查看 1.2K关注 0票数 0

我正在用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组,然后将我的用户添加到其中,然后重新启动,以绝对确定所做的更改将产生效果:

代码语言:javascript
复制
[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

在上述博客文章中测试curl命令。它作为根用户工作,而不是作为用户工作。

代码语言:javascript
复制
[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
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2023-02-08 14:42:04

您必须设置podman才能作为用户运行。

  1. 如果您已经将podman设置为使用systemctl enable podman运行,则需要使用systemctl disable --now podman podman.socket进行反向操作。如果您以前安装了podman-docker,您会注意到从/var/run/docker.sock/run/podman/podman.sock的软链接现在将中断,因为podman现在不再在root下运行。
  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 --log-level=debug system service -t0从podman服务获得调试输出。您可以使用curl --unix-socket /run/user/1000/podman/podman.sock -X GET http://d/version`[d]`检查到套接字本身的连接情况。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/731645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档