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

Google cloud platform 如何让podman/buildah容器在GCE的CentOS下运行?,google-cloud-platform,centos,google-compute-engine,podman,buildah,Google Cloud Platform,Centos,Google Compute Engine,Podman,Buildah,1。总结问题 我遵循开发者RedHat的建议,使一个简单的node/express容器能够正常工作 我无法在GCE上的CentOS 7虚拟机下运行容器 我有一个CentOS 7 GCE虚拟机,在那里我安装了Docker 我能够成功地构建和运行Docker容器,并将它们毫无问题地推送到Google的容器注册中心 现在,我正在尝试构建podman/buildah容器,并做同样的事情。 我已经安装了buildman/podman。当我运行此命令时: podman build -t hello-worl

1。总结问题

我遵循开发者RedHat的建议,使一个简单的node/express容器能够正常工作

我无法在GCE上的CentOS 7虚拟机下运行容器

我有一个CentOS 7 GCE虚拟机,在那里我安装了Docker

我能够成功地构建和运行Docker容器,并将它们毫无问题地推送到Google的容器注册中心

现在,我正在尝试构建podman/buildah容器,并做同样的事情。 我已经安装了buildman/podman。当我运行此命令时:

podman build -t hello-world-nodejs .
我收到以下错误消息:

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

有什么想法吗?

此外,如果有任何关于将此图像导入Google容器注册表并在Cloud Run下运行的指南,我们将不胜感激

最终,一些容器的目标是云服务

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

我尝试过在网上搜索解决方案,但迄今为止没有找到任何解决问题的方法

3。显示一些代码

podman build -t hello-world-nodejs .
4。描述预期和实际结果,包括任何错误消息


我可以在这个GCE虚拟机上创建和运行docker映像/容器,我正试图用buildah/podman做同样的事情。

我在GCE上开发了一个CentOS 7虚拟机,并遇到了同样的问题。导致此问题的原因是默认情况下内核上未启用用户名称空间。您有两个选项,要么以root用户身份运行podman(或者使用sudo),要么在CentOS VM中启用用户名称空间(困难的方式)

根据文章,用户名称空间的使用以及uid和gid的分配是使无根容器在您的环境中安全工作所必需的


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

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

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-*}

podman
默认情况下会尝试以无根模式运行容器(与Docker不同)。这需要一些初始配置,有关详细信息,请参阅。您的错误是因为您没有执行此配置。使用fedora,您可以获得一个更新的内核,它不需要所有这些步骤和配置。无根播客开箱即用。对于云运行,创建一个单独的问题。尽量把你的问题限制在一个主题和一项服务上。