首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Redhat 9中通过套接字与podman码头员交互

在Redhat 9中通过套接字与podman码头员交互
EN

Stack Overflow用户
提问于 2022-06-20 16:55:07
回答 2查看 974关注 0票数 0

我正在尝试将我的一个开发程序从centos 8迁移到RHEL9。我严重依赖于码头,并注意到,当我试图运行一个码头命令,在RHEL盒,它安装了podman。这似乎进展顺利;我能够使用我已经知道的docker命令来提取映像、启动、构建、提交一个新版本,而不出问题。

不过,我遇到的问题是,我似乎无法通过端口套接字与其交互(这似乎是与podman套接字的链接)。

如果我运行docker命令:

代码语言:javascript
复制
[@rhel9 ~]$ docker images
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
REPOSITORY             TAG              IMAGE ID      CREATED      SIZE
docker.io/redhat/ubi9  dev_image        de371523ca26  6 hours ago  805 MB
docker.io/redhat/ubi9  latest           9ad46cd10362  6 days ago   230 MB

它列出了我所期望的图片。我也应该能跑:

代码语言:javascript
复制
[@rhel9 ~]$ curl --unix-socket /var/run/docker.sock -H 'Content-Type: application/json' http://localhost/images/json | jq .
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100     3  100     3    0     0     55      0 --:--:-- --:--:-- --:--:--    55
[]

但正如你所看到的,什么都不会回来。套接字已经启动并正在运行,因为我可以在没有问题的情况下将它平平:

代码语言:javascript
复制
[@rhel9 ~]$ curl -H "Content-Type: application/json" --unix-socket /var/run/docker.sock http://localhost/_ping
OK

我还直接使用podman套接字尝试了curl命令,但结果是相同的。是否有什么是我遗漏的,或者是让它开始工作的窍门,这样我就可以通过套接字与码头/播客互动?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-21 11:48:22

我设法解决了我的问题,尽管我不完全确定这种情况是如何发生的。我正在查看docker infopodman info的输出,并注意到它们都将远程套接字设置为:

代码语言:javascript
复制
remoteSocket:
    exists: true
    path: /run/user/1000/podman/podman.sock

而不是我所认为的/run/podman/podman.sock (这个套接字实际上存在于我的机器上)。查看podman.socket的systemd文件,我可以看到套接字被指定为%t/podman/podman.sock,并检查手册页中的podman-system-service,它将无根套接字指定为unix://$XDG_RUNTIME_DIR/podman/podman.sock (其中是my $XDG_RUNTIME_DIR=/run/user/1000 )。

为了让所有这些都与我的软件一起工作,我只需要确保DOCKER_HOST env变量的设置是正确的,例如export DOCKER_HOST=unix:///run/user/1000/podman/podman.sock

票数 0
EN

Stack Overflow用户

发布于 2022-06-20 21:18:11

Podman不是使用Docker这样的客户机/服务器模型实现的。默认情况下,不存在套接字,因为没有与docker守护进程等效的套接字。Podman确实提供了一个兼容接口,您可以通过启用podman.socket单元来使用该接口:

代码语言:javascript
复制
$ systemctl enable --now podman.socket

这将在/run/podman/podman.sock上公开响应Docker命令的Unix套接字。但!

套接字将您连接到以根用户身份运行的podman,而您一直以非根用户的身份运行podman:因此您不会看到图像、容器、网络等相同的列表。

一些随机的注释:

默认情况下,

  • Podman运行“无根”:您可以以非特权用户的身份运行它,并且它的所有存储、元数据等都存储在您的主目录中。
  • 您也可以以root的形式运行Podman,在这种情况下,这种行为更像是Docker。
  • 如果启用podman套接字,可以用实际的Docker客户端替换podman-docker (并使用docker-compose之类的东西),尽管我偶尔会遇到这样的问题。我通常只使用podman,并在VM中运行坞引擎)。您需要配置Docker来查看/run/podman/podman.sock.

中的podman套接字

我已经在我的系统上启用了podman.socket,所以这是可行的:

代码语言:javascript
复制
$ curl --unix-socket /run/podman/podman.sock -H 'content-type: application/json' http://localhost/_ping
OK

或者:

代码语言:javascript
复制
$ curl --unix-socket /run/podman/podman.sock -H 'content-type: application/json' -sf http://localhost/containers/json | jq
[
  {
    "Id": "f0d9a880c45bb5857b24f46bcb6eeeca162eb68d574c8ba16c4a03703c2d60f4",
    "Names": [
      "/sleeper"
    ],
    "Image": "docker.io/library/alpine:latest",
    "ImageID": "14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab",
    "Command": "sleep inf",
    "Created": 1655418914,
    "Ports": [],
    "Labels": {},
    "State": "running",
    "Status": "Up 3 days",
    "NetworkSettings": {
      "Networks": {
        "podman": {
          "IPAMConfig": null,
          "Links": null,
          "Aliases": null,
          "NetworkID": "podman",
          "EndpointID": "",
          "Gateway": "10.88.0.1",
          "IPAddress": "10.88.0.2",
          "IPPrefixLen": 16,
          "IPv6Gateway": "",
          "GlobalIPv6Address": "",
          "GlobalIPv6PrefixLen": 0,
          "MacAddress": "06:55:82:1b:1a:41",
          "DriverOpts": null
        }
      }
    },
    "Mounts": null,
    "Name": "",
    "Config": null,
    "NetworkingConfig": null,
    "Platform": null,
    "AdjustCPUShares": false
  }
]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72690495

复制
相关文章

相似问题

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