4

1. 总结问题

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

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

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

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

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

podman build -t hello-world-nodejs .

我收到以下错误消息:

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

有任何想法吗?

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

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

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

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

3.显示一些代码

podman build -t hello-world-nodejs .

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

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

4

2 回答 2

3

以下为我解决了这个问题:

sudo bash -c 'echo 10000 > /proc/sys/user/max_user_namespaces'
sudo bash -c "echo $(whoami):110000:65536 > /etc/subuid"
sudo bash -c "echo $(whoami):110000:65536 > /etc/subgid"

lchown然后,如果您遇到与运行以下相关的错误:

sudo rm -rf ~/.{config,local/share}/containers /run/user/$(id -u)/{libpod,runc,vfs-*}
于 2020-06-18T11:44:20.497 回答
1

我在 GCE 上启动了一个 CentOS 7 VM 并遇到了同样的问题。该问题是由于默认情况下未在内核上启用用户命名空间引起的。您有 2 个选项,以 root 身份运行 podman(或使用 sudo)或在您的 CentOS VM 中启用用户命名空间(硬方式)。

根据这里的帖子,用户命名空间的使用以及使无根容器在您的环境中安全工作所需的 uid 和 gid 的分配。

可能 StackOverflow 不是问这个问题的最佳场所。最好在 ServerFault 站点中询问,因为它是服务器而不是编码问题。

于 2019-09-12T15:51:39.523 回答