如何使Podman / Buildah容器在GCE上的CentOS下运行?

时间:2019-09-12 06:03:25

标签: google-cloud-platform centos google-compute-engine podman buildah

1。总结问题

我正在遵循Developers RedHat的this simple tutorial,以使一个简单的节点/表达容器正常工作。

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

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

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

现在,我正在尝试构建podman / buildah容器,并执行相同的操作。 我安装了buildman / podman。当我运行此命令时:

@Component({
  ...
  encapsulation: ViewEncapsulation.NONE
})

我收到以下错误消息:

  

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

有什么想法吗?

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

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

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

我已经尝试过在网络上搜索解决方案,但到目前为止,没有任何东西可以解决问题。

3。显示一些代码

podman build -t hello-world-nodejs .

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

我可以在此GCE VM上创建并运行docker映像/容器,我正在尝试对buildah / podman进行同样的操作。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我在GCE上启动了一个CentOS 7 VM,并遇到了同样的问题。造成此问题的原因是,默认情况下,内核上未启用用户命名空间。您有2种选择,要么以root身份运行podman(或使用sudo),要么在CentOS VM中启用用户命名空间(困难的方式)。

根据here帖子,使用用户命名空间以及为使无根容器在环境中安全运行所需的uid和gid分配。

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