【问题标题】:What could be the reason why Podman isn't working on Remote Containers?Podman 不在远程容器上工作的原因可能是什么?
【发布时间】:2022-08-21 21:08:37
【问题描述】:

关于为什么Remote - Containers 不能与podman 一起工作的任何提示视窗?

  • 安装podman v4.2.0 on视窗 11通过.msi package

  • remote.containers.dockerPath 设置为podmanVS 代码设置

  • 运行podman machine init

  • 运行podman machine start

  • 打开Remote Explorer inVS 代码并呈现以下内容:

一切都在使用 podmanpullrunimages 等,但 VSCode 上的 Remote - Containers 无法识别 podman

在 VS Code 中运行 Remote-Containers Developer: Show All Logs... 后:

[2022-08-21T12:55:15.916Z] Start: Run: podman version --format {{.Server.APIVersion}}
[2022-08-21T12:55:16.080Z] Stop (164 ms): Run: podman version --format {{.Server.APIVersion}}
[2022-08-21T12:55:16.080Z] Cannot connect to Podman. Please verify your connection to the Linux system using `podman system connection list`, or try `podman machine init` and `podman machine start` to manage a new Linux VM
Error: unable to connect to Podman. failed to create sshClient: dial unix \\\\.\\pipe\\openssh-ssh-agent: connect: No connection could be made because the target machine actively refused it.

podman system connection list 在终端中:

Name                         URI                                                          Identity                                      Default
podman-machine-default       ssh://user@localhost:62078/run/user/1000/podman/podman.sock  C:\\Users\\Edmundo\\.ssh\\podman-machine-default  true
podman-machine-default-root  ssh://root@localhost:62078/run/podman/podman.sock            C:\\Users\\Edmundo\\.ssh\\podman-machine-default  false

相关问题:#6957#6747

  • 如果将错误消息写为问题中的文本(除了屏幕截图的 PNG 格式),错误消息将更易于阅读。
  • 我放弃了使用 windows 安装 (.msi) 并在 ubuntu wsl 中安装了 podman。它以这种方式工作。

标签: visual-studio-code podman


【解决方案1】:

请确认您正在运行最新版本(预发行版)

v0.236.1。

(早期版本的github上有已知问题,在此版本中修复)

【讨论】:

  • 谢谢你。但是,v0.236.1 中的相同错误消息
  • 我认为此错误与扩展有关,因为 Docker 扩展 (ms-azuretools.vscode-docker) 在 Docker 路径设置为 podman 时工作正常。估计只能等补丁了。。。
  • fwiw,我为 vscode-docker 写了一个补丁来让 podman 工作。请看:github.com/microsoft/vscode-docker/pull/3531
  • 另外 - 最近审查了代码(今天),这不太可能几乎不可能vscode-docker 插件正在与 podman 一起使用。 docker 也安装了吗? .. 我这样说是因为正如拉取请求所表明的那样,docker 套接字的路径在源代码中是硬编码的。
  • 未安装 Docker。
【解决方案2】:

在 WSL shell 中,即调试时试试这个

首先 - 尝试启动 podman podlib REST api(对于套接字,生命周期 5000 秒。 - 设置为零表示“永远”)

podman system service -t 5000 &

然后将 podman.sock 符号链接到 vscode 期望的位置:

sudo ln -s /mnt/wslg/runtime-dir/podman/podman.sock /var/run/docker.sock

如果这些都不起作用,你介意发布一个转储:

podman info

提示:检查 podman info YAML 输出中的 host | remoteSocket | path 并确保它与上面的路径 /mnt/wslg/runtime-dir/podman/podman.sock 匹配。

【讨论】:

  • ln: failed to create symbolic link '/var/run/docker.sock': File exists 目前是/var/run/docker.sock -> /run/podman/podman.sock
  • podman info --format '{{.Host.RemoteSocket.Path}}' /run/user/1000/podman/podman.sock
  • 所以有一个问题,路径不匹配。 /var/run/docker.sock 被硬编码到插件中作为 vscode 作为 const,但它没有指向与您的 podman podlib 路径相同的位置。我不会推测这是怎么发生的,但是重新链接套接字,你应该没问题:sudo ln -sf /run/user/1000/podman/podman.sock /var/run/docker.sock
  • docs.podman.io/en/latest/markdown/podman-system-service.1.html 表明两条路径都是有效的,路径的分歧是 podman 的有根与无根配置
  • 如果还是不行,下一步podman info --format '{{.Host.Security.Rootless}}'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-16
相关资源
最近更新 更多