Как заставить контейнер podman/buildah работать под CentOS на GCE?

1. Обобщите проблему.

Я следую этому простому руководству от разработчиков RedHat, чтобы заставить работать простой контейнер node/express.

Я не могу запустить контейнер под виртуальной машиной CentOS 7 на GCE.

У меня есть виртуальная машина CentOS 7 GCE, на которой установлен Docker.

Я могу успешно создавать и запускать контейнеры 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, я пытаюсь сделать то же самое с buildah/podman.

2 ответа

Следующее решило эту проблему для меня:

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

Я развернул виртуальную машину CentOS 7 на GCE и получил ту же проблему. Проблема вызвана тем, что по умолчанию в ядре не включены пространства имен пользователей. У вас есть 2 варианта: либо запустить podman от имени root (или использовать sudo), либо включить пространства имен пользователей в вашей виртуальной машине CentOS (сложный способ).

Согласно сообщению здесь, использование пространства имен пользователей и распределение uid и gid, которые необходимы для безопасной работы контейнеров без root в вашей среде.

Возможно, Stackru - не лучшее место, чтобы задать этот вопрос. Лучше спросить на сайте ServerFault, так как это проблема с сервером, а не с кодированием.

Другие вопросы по тегам