问题标签 [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.
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
。
containers - 无法从具有 `openvpn` 的容器中`ssh`
基本设置
使用:
- Fedora 30,完全升级(内核 5.1.19)
- 播客 1.4.4
我有这个 Dockerfile:
我用它构建:
现在,为了能够成功运行它,我必须处理一些 SELinux 问题(请参阅使用 Podman 连接到 VPN)。
修复 SELinux 权限问题
我ovpn_container.cil
为 VPN 容器定义了这个自定义策略:
我将政策应用于:
运行容器
现在我可以成功运行容器:
问题
容器运行后,我在容器内打开一个终端,我想从该终端ssh
访问远程服务器:
从容器我能够ssh
成功地连接到远程服务器,但前提是它们不在 VPN 内。
当我尝试访问ssh
VPN 中的服务器时,它会卡住一段时间,然后抛出此错误:
我会错过什么?
docker - 启动基于容器(开发)环境的最佳实践
OCI 容器是一种为项目打包合适工具链的便捷方式,使开发环境保持一致,新项目成员只需签出项目并拉取相关容器即可快速启动。
- 当然,我不是在谈论只需要 C++ 编译器或 Node.JS 的项目。我说的是需要特定编译器包的项目,这些包不适用于比 Fedora 22 更新的版本,需要手动安装到陌生地方的特殊工具的项目,在具有不可共同安装的工具的多个项目上工作等等. 对于这类事情,拥有一个容器比遵循二十个安装步骤然后祈祷之前项目留下的部分不会为您破坏事情要容易得多。
但是,使用编译器启动容器来构建项目需要 docker (或 podman )命令行上的很多选项。除了图像名称,通常:
- 挂载项目工作目录
- 用户 ID(因为容器应该在用户运行它时访问挂载的文件)
- 如果该工具需要访问某些网络资源,它可能还需要
- 一些凭据,通过环境或其他方式
- ssh 代理套接字(挂载和环境变量)
- 如果构建过程涉及构建 docker 容器
- 码头插座(安装);buildah可以在没有特殊设置的情况下工作
- 如果是图形工具(例如 IDE)
- X 套接字安装和环境变量
--ipc host
使共享内存工作
然后它可能会因其他因素而变得更加复杂。例如,如果开发人员位于不同的部门并且无法访问同一个 docker 存储库,则他们的图像可能会以不同的方式调用,因为docker不支持存储库的符号名称(尽管podman支持)。
是否有一些标准(ish)方法来处理这些选项,或者每个人都只是使用临时包装脚本?
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?详细的答案会很有帮助。谢谢你。
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 失败。
podman - Podman 是否支持私有注册表
我的理解是,当 Podman 拉取图像时,它会将其缓存到用户主目录 - 例如)~/.local/share/containers。Docker 为私有镜像注册表提供了一种机制,可以在项目团队之间共享。我找不到任何与 Podman 类似概念的参考。Podman 如何管理需要在团队中共享的私有镜像?
我正在努力寻找对 Podman 私有注册表的任何引用。该主题在 StackOverflow 上的 0 个搜索结果。
docker - 如何通过命令行安装 Podman windows?
我正在使用 Windows 10 家庭版。但是在这个版本中,我无法使用 docker 或 oracle vm virtualbox。那么我可以使用 Podman 代替 docker 吗?如果是,那么它的命令是什么?
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 做同样的事情。
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 版本。
centos - 为什么 Podman 使用不同的 UID 报告“命名空间中可用的 ID 不足”?
事实:
- 无根 podman 非常适合 uid
1480
- 无根 podman 无法获取 uid
2088
- CentOS 7
- 核心
3.10.0-1062.1.2.el7.x86_64
- 播客版
1.4.4
- 两者之间几乎整个环境都被移除了
- 的文件系统
/tmp
是xfs
- 两个用户的
capsh
输出是相同的,但对于 uid / username - 两个 UID 在
/etc/sub{u,g}id
文件中具有相同的条目 - 这
$HOME/.config/containers/storage.conf
是默认值,除了 uid 之外,两者之间是相同的。以下storage.conf
供参考。
我编写了以下 shell 脚本来演示两者的运行环境有多相似:
这是脚本的输出:
这是storage.conf
uid的1480
。它是相同的,除了s/1480/2088/
:
podman info
您可以看到用户的两个输出之间基本上没有区别:
我拒绝相信if (2088 == uid) { abort(); }
podman 的源代码中存在或类似的废话。我错过了什么?