Как запустить несколько команд внутри контейнера buildah с помощью логического оператора AND && bash из командной строки хоста?

Вот пример моей проблемы, которая начинается с изображения debian:

$ buildah pull debian:buster && container=$(buildah from debian:buster)
$ buildah run $container -- apt -y update && apt -y upgrade
Hit:1 http://security.debian.org/debian-security buster/updates InRelease
Hit:2 http://deb.debian.org/debian buster InRelease
Hit:3 http://deb.debian.org/debian buster-updates InRelease
Reading package lists... Done
Building dependency tree       
Reading state information... Done
All packages are up to date.
bash: apt: command not found...
Install package 'apt' to provide command 'apt'? [N/y]

Моя хост-оболочка интерпретирует логическое И && вне команды для buildah. Я ожидаю, что правая часть логического И будет запущена внутри контейнера buildah.

1
Karthik Nedunchezhiyan 26 Дек 2020 в 16:39
Непроверено: попробуйте заключить в кавычки команду, которую хотите выполнить: buildah run $container -- 'apt -y update && apt -y upgrade'. Некоторые программы интерпретируют командную строку как одну команду оболочки, но не все программы делают это, это зависит от того, как buildah был разработан.
 – 
user000001
26 Дек 2020 в 17:03
Я не очень хорошо знаком с Go, но кажется, что buildah run допускает только одну команду и ее аргументы: github.com/containers/buildah/blob/…
 – 
EarthIsHome
27 Дек 2020 в 00:13

1 ответ

Лучший ответ

Как насчет?

Buildah run $container -- sh -c 'apt -y update && apt -y upgrade'.

3
rhatdan 28 Дек 2020 в 15:28