问题标签 [podman]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2847 浏览

dockerfile - 使用 Podman 连接到 VPN

有这个Dockerfile

使用以下方法构建图像:

如果我尝试使用(注意$(pwd),VPN 配置和凭据的存储位置)运行它:

我收到以下错误:

关于如何解决这个问题的任何想法?如果有帮助,我不介意更改基本图像(即:到 Alpine 或其他任何东西,只要它允许我openvpn用于连接)。

系统信息

使用带有内核的 Podman 1.4.4(无根)和 Fedora 30 发行版5.1.19

/dev/net/tun权限

运行容器:

然后,从容器中,我可以:

我也可以列出/dev/net,但会收到“权限被拒绝错误”:

--privileged

如果我尝试--privileged

然后,我得到一个 no-such-file-or-directory 错误(errno=2),而不是权限被拒绝错误(errno=13):

使用时我可以有效地验证没有/dev/net/目录--privileged,即使我传递了--cap-add=NET_ADMIN --device=/dev/net/tun参数。

详细日志

这是我在配置客户端时得到的日志verb 3

错误号可能会根据我是否运行命令而改变--privileged

0 投票
0 回答
462 浏览

containers - 无法从具有 `openvpn` 的容器中`ssh`

基本设置

使用:

  • Fedora 30,完全升级(内核 5.1.19)
  • 播客 1.4.4

我有这个 Dockerfile:

我用它构建:

现在,为了能够成功运行它,我必须处理一些 SELinux 问题(请参阅使用 Podman 连接到 VPN)。

修复 SELinux 权限问题

ovpn_container.cil为 VPN 容器定义了这个自定义策略:

我将政策应用于:

运行容器

现在我可以成功运行容器:

问题

容器运行后,我在容器内打开一个终端,我想从该终端ssh访问远程服务器:

从容器我能够ssh成功地连接到远程服务器,但前提是它们不在 VPN 内。

当我尝试访问sshVPN 中的服务器时,它会卡住一段时间,然后抛出此错误:

我会错过什么?

0 投票
1 回答
401 浏览

docker - 启动基于容器(开发)环境的最佳实践

OCI 容器是一种为项目打包合适工具链的便捷方式,使开发环境保持一致,新项目成员只需签出项目并拉取相关容器即可快速启动。

  • 当然,我不是在谈论只需要 C++ 编译器或 Node.JS 的项目。我说的是需要特定编译器包的项目,这些包不适用于比 Fedora 22 更新的版本,需要手动安装到陌生地方的特殊工具的项目,在具有不可共同安装的工具的多个项目上工作等等. 对于这类事情,拥有一个容器比遵循二十个安装步骤然后祈祷之前项目留下的部分不会为您破坏事情要容易得多。

但是,使用编译器启动容器来构建项目需要 docker (或 podman )命令行上很多选项。除了图像名称,通常:

  • 挂载项目工作目录
  • 用户 ID(因为容器应该在用户运行它时访问挂载的文件)
  • 如果该工具需要访问某些网络资源,它可能还需要
    • 一些凭据,通过环境或其他方式
    • ssh 代理套接字(挂载和环境变量)
  • 如果构建过程涉及构建 docker 容器
    • 码头插座(安装);buildah可以在没有特殊设置的情况下工作
  • 如果是图形工具(例如 IDE)
    • X 套接字安装和环境变量
    • --ipc host使共享内存工作

然后它可能会因其他因素而变得更加复杂。例如,如果开发人员位于不同的部门并且无法访问同一个 docker 存储库,则他们的图像可能会以不同的方式调用,因为docker不支持存储库的符号名称(尽管podman支持)。

是否有一些标准(ish)方法来处理这些选项,或者每个人都只是使用临时包装脚本?

0 投票
3 回答
1412 浏览

docker - 在 RHEL8 上安装 kubernetes 致命:docker.service 未找到

我正在尝试在 aws 实例(RHEL8)上安装 kubernetes,但是在运行 kubeadm init 时它给了我找不到 docker.service。我做了一些挖掘,我发现

Red Hat for Red Hat Enterprise Linux (RHEL) 8 不提供或支持 docker 软件包。docker 容器引擎被容器工具模块中的一套工具所取代。

现在我的问题是如何为 kubernetes 集群安装 docker?如果不支持 docker,那么在 RHEL8 上启动 kubernetes 的其他选项是什么。我们如何使用其他选项在 RHEL8 上安装 kubernetes?详细的答案会很有帮助。谢谢你。

0 投票
2 回答
49 浏览

podman - 使用 buildah/podman 启动 Server (WebSphere) 作为构建步骤来配置它

在 docker 中,我可以将服务器(WebSphere)作为构建步骤启动,然后通过它的 jython SOAP API 开始配置它。

我正在尝试使用 buildah 将我的 Dockerfile 转换为 shell 脚本来创建容器而不是 docker build。有没有一种简单的方法来实现同样的行为?(目前还不行)

到目前为止我尝试过的事情:

  • buildah 运行 $container /opt/../startServer.sh server1

    结果: timeout

  • chroot $mountpoint bash -c "/opt/../startServer.sh server1"

    结果: error: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or director

编辑1:

  • 还尝试buildah build-using-dockerfile在使用 docker 本身时使用正常工作的 Dockerfile 运行,但使用 buildah 失败。
0 投票
1 回答
3239 浏览

podman - Podman 是否支持私有注册表

我的理解是,当 Podman 拉取图像时,它会将其缓存到用户主目录 - 例如)~/.local/share/containers。Docker 为私有镜像注册表提供了一种机制,可以在项目团队之间共享。我找不到任何与 Podman 类似概念的参考。Podman 如何管理需要在团队中共享的私有镜像?

我正在努力寻找对 Podman 私有注册表的任何引用。该主题在 StackOverflow 上的 0 个搜索结果。

0 投票
1 回答
2197 浏览

docker - 如何通过命令行安装 Podman windows?

我正在使用 Windows 10 家庭版。但是在这个版本中,我无法使用 docker 或 oracle vm virtualbox。那么我可以使用 Podman 代替 docker 吗?如果是,那么它的命令是什么?

0 投票
2 回答
4019 浏览

google-cloud-platform - 如何让 podman/buildah 容器在 GCE 上的 CentOS 下运行?

1. 总结问题

我正在按照Developers RedHat 的这个简单教程来获得一个简单的节点/快速容器工作。

我无法让容器在 GCE 上的 CentOS 7 VM 下运行。

我有一个安装了 Docker 的 CentOS 7 GCE 虚拟机。

我能够成功构建和运行 Docker 容器,并将它们推送到 Google 的容器注册表,没有任何问题。

现在我正在尝试构建 podman/buildah 容器,并做同样的事情。我安装了 buildman/podman。当我运行这个:

我收到以下错误消息:

无法克隆:/proc/sys/user/max_user_namespaces 中未启用无效参数用户命名空间错误:无法获取运行时:无法重新执行进程

有任何想法吗?

此外,如果有任何指南可以将此映像放入 Google 的容器注册表并在 Cloud Run 下运行,我们将不胜感激。

最终,某些容器的目的地是云服务。

2. 提供背景,包括您已经尝试过的内容

我曾尝试在网络上搜索解决方案,但到目前为止还没有找到解决问题的方法。

3.显示一些代码

4. 描述预期和实际结果,包括任何错误消息

我可以在这个 GCE VM 上创建和运行 docker 图像/容器,我正在尝试对 buildah/podman 做同样的事情。

0 投票
0 回答
1300 浏览

podman - 以非 root 身份运行容器,以便容器“root”不会映射到正在运行的用户

问题:

如何使用 podman 以非 root 身份运行容器,以便容器内的 root 用户不会映射到运行容器的主机用户?

细节

在 podman 中,当以非 root 身份运行容器时,容器 root uid (0) 映射到主机 uid,而其他所有 uid 都根据/etc/subuid文件进行映射。例如:

如上所示,容器 root 用户被映射到运行容器的主机用户的 uid(即 1000),因此由 root 创建的文件具有myuser的 uid(即 1000)。

而容器内的非root用户是根据subuid运行用户的映射来映射的,即:inneruser容器内的用户,uid 1000,映射到宿主机的uid 232071(231072 + 1000)。

重复问题:

如何使用 podman 以非 root 身份运行容器,以便容器内的 root 用户不会映射到运行容器的主机用户?

我尝试传递--subuidname=myuser给 podman,即:

但我收到这条消息:

我原以为传递分配给我的用户的确切命名空间会产生将所有容器 uid 映射到的效果,包括容器根 (0) 到映射到我的用户 in /etc/subuid.

技术细节:

使用 将.config/containers/storage.conf文件从vfs驱动程序更改为驱动overlay程序fuse-overlayfs,即:

除此之外,它是使用官方 PPA1.5.1安装在 Ubuntu 18.04 上的标准 podman 版本。

0 投票
3 回答
10545 浏览

centos - 为什么 Podman 使用不同的 UID 报告“命名空间中可用的 ID 不足”?

事实:

  1. 无根 podman 非常适合 uid1480
  2. 无根 podman 无法获取 uid2088
  3. CentOS 7
  4. 核心3.10.0-1062.1.2.el7.x86_64
  5. 播客版1.4.4
  6. 两者之间几乎整个环境都被移除了
  7. 的文件系统/tmpxfs
  8. 两个用户的capsh输出是相同的,但对于 uid / username
  9. 两个 UID 在/etc/sub{u,g}id文件中具有相同的条目
  10. $HOME/.config/containers/storage.conf是默认值,除了 uid 之外,两者之间是相同的。以下storage.conf供参考。

我编写了以下 shell 脚本来演示两者的运行环境有多相似:

这是脚本的输出:

这是storage.confuid的1480。它是相同的,除了s/1480/2088/

podman info您可以看到用户的两个输出之间基本上没有区别:

我拒绝相信if (2088 == uid) { abort(); }podman 的源代码中存在或类似的废话。我错过了什么?