问题标签 [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.
podman - PODMAN:无法为容器分配 IP
我正在测试应用程序并尝试将 IP 分配给容器,但它一直失败并显示以下消息:
以下是网络配置:
docker - 我需要 nvidia-container-runtime,为什么?
我想从容器内部访问我的 NVIDIA GPU。我可以在没有 nvidia-container-runtime 的情况下执行此操作吗?
需要一个自定义的 Docker 运行时来与一台设备通信似乎很奇怪。那里有一整套 PCI 设备。为什么这个需要自己的运行时?例如,假设我同时拥有 NVIDIA 和 AMD GPU。我会无法从一个容器内访问两者吗?
我知道 nvidia-container-runtime 让我可以控制哪些 GPU 通过NVIDIA_VISIBLE_DEVICES
. 但我不在乎这个。我没有使用容器来隔离设备;我正在使用容器来管理 CUDA/CUDNN/TensorFlow 版本 h*ll。如果我确实想隔离设备,我会使用与永远相同的机制:通过控制对 /dev 中节点的访问。
简而言之,整个“自定义运行时”设计在我看来是有缺陷的。
所以,问题:
- 我错过了什么?
- 我可以使用库存的 Docker(或 podman)运行时访问我的 NVIDIA GPU 吗?
- 如果不是,为什么不呢?
docker - 如何使用 podman 将图像推送到 Docker 注册表
是否可以使用 podman 将图像推送到 Docker 注册表?
我在 Fedora 上使用podman-docker
(声称模拟 Docker CLI)包运行 podman,并且我设法docker login
使用我的 hub.docker.com 凭据成功运行,但是当我尝试推送图像时,它无法连接。
centos - 主机重启后容器中的循环设备设置(losetup、mount 等)立即失败
我正在尝试在 Centos 8 上的容器环境(podman)中填充磁盘映像。我最初遇到了从容器访问循环设备的问题,直到找到我需要以 root 身份运行 podman 的 SO 和其他源和与--privileged
选项。
虽然这确实解决了我的问题,但我注意到在重新启动主机后,我第一次尝试在容器中设置循环设备会失败(failed to set up loop device: No such file or directory
),但在退出并重新启动容器后它会成功(/dev/loop0)。如果由于某种原因我需要在容器中设置第二个循环设备(/dev/loop1)(在第一个工作之后),它也会失败,直到我退出并重新启动容器。
进一步试验,我发现如果我运行losetup --find --show <file created with dd>
足够多的时间来附加我需要的最大数量的循环设备,然后用 分离所有这些losetup -D
,我可以完全避免错误,我可以完全避免容器中的循环设备错误。
我怀疑我遗漏了一些明显的关于 losttup 在主机上所做的事情,它显然无法完全在容器内完成,或者更具体地说,这可能是 Centos+podman+losetup 问题。关于发生了什么以及为什么我必须在重新启动后预先附加/分离循环设备以避免容器内部出现问题的任何见解?
在 Centos 8 系统上重现的步骤(在重新启动后附加/分离后):
amazon-web-services - AWS ECR 使用 podman 登录
早上好/下午/晚上好!你能帮我吗?
我正在使用 RHEL 8.2,这个版本不支持 Docker。我安装了 Podman,一切正常,直到我使用以下命令:
但是,它不起作用,因为它来自 Docker(我认为它来自 AWS Cli)。
错误是:
我一直在寻找答案,有些人使用了这样的命令:
但是我尝试了一些标志和图像,但没有任何效果!
podman 的等效命令是什么?
谢谢!
logging - 如何控制 podman 容器日志行为 (ctr.log)
我/var
跑满了,罪魁祸首是/var/lib/containers/storage/overlay-containers/<container-hash>/userdata/ctr.log
我的 gitlab 容器,它是 11GB。
我徒劳地搜索了文档/互联网上的任何信息
- 删除 ctr.log (在正在运行的容器上)是否安全?
- 是否有
podman
管理日志的命令(例如清理、保留最后 x MB 或天)? - 做
--logdriver
和--logopt
选项来podman-run
控制/影响ctr.log
,还是这是一些额外的日志? - 如果(通过(3))我可以关闭日志记录,当附加到正在运行的容器时我还会看到日志吗?
关于(1),答案似乎是“是”,删除ctr.log
并重新启动容器刚刚创建了一个新的ctr.log
.
docker - Podman 为特定 RUN 步骤构建设置容器的网络模式
我有一个 Dockerfile,其中包含一些RUN
用于启动 mariadb 服务器以进行数据库导入操作的命令。
问题是podman build
将RUN
命令的网络模式设置为host
默认情况下,它使用主机的网络接口 - 正如我从 podman 的文档中理解的那样 - 所以,当 mariadb 步骤到来时,服务器无法启动,因为有另一个 mariadb 实例正在运行具有相同端口的主机 - 我无法暂时停止。
对我有用的解决方法是在命令中添加--network container
标志,build
但是这样做会阻止其他安装依赖项的步骤访问互联网yum
,我的猜测是为构建步骤创建的网络命名空间没有外部互联网访问.
因此,这有点像死锁,要在我正在构建的映像中安装系统依赖项,我必须使用主机网络,并且要启动使用网络接口的服务,我必须使用无法访问互联网的容器网络 - 只能使用build
但是,当run
使用用户定义的桥接网络 ning 容器时,可以访问互联网。
我目前的解决方法是使用主机网络构建两次,另一个使用容器网络构建 - 第二次build
使用已经安装了外部依赖项的缓存图像 - 因此,在这种情况下,如果我们可以定义哪个步骤会很棒Dockerfile
或Containerfile
使用主机网络并使用桥接网络。
对于这个问题的长时间阐述,我深表歉意,我试图搜索这个特殊案例,但是除了手动构建每组步骤之外找不到任何明确的答案。
PS:我尝试将network
标志设置为我的用户定义的网络,该网络在运行容器时工作,但不受支持 - 或者我不确定如何使用build
.
docker - Podman 中的 Podman,类似于 Docker 中的 Docker?
有没有办法在 Podman 中运行 Podman,类似于在 Docker 中运行 Docker 的方式?
这是我的 Dockerfile 的片段,它强烈基于另一个问题:
现在尝试一些测试:
我也尝试过另一个问题的建议,通过--cgroup-manager=cgroupfs
,但没有成功:
似乎需要一些网络配置。我发现下面的项目表明可能需要对网络配置进行一些调整,但我不知道它的上下文是什么以及它是否适用于此。 https://github.com/joshkunz/qemu-docker
编辑:我刚刚发现/var/run/podman.sock
,但也没有成功:
好像root
看不到我在我的用户下创建的图像。
有任何想法吗?谢谢。
cgroups - RHEL8 上 ubi8 容器中带有 systemd 的 Rootless Podman 无法正常工作
我们正在尝试使用 podman 在 RHEL8 下以非 root 用户身份从 ubi8-init Image 运行容器。我们通过添加内核参数和检查版本来全局启用 cgroups 2:
设置了 Subuid 和 subguid:
由于权限问题,丑陋的解决方法:
现在我们可以运行容器并通过 exec /bin/bash 跳转到它。问题是,如果我们想使用 podman cp 将某些内容复制到容器中,则会出现以下错误:
没有 chown 解决方法的命令的示例输出:
一定是有什么完全错误的、配置错误的或有问题的。有没有人这样做或对我们遇到的问题有任何建议?