简介
buildah是一个构建OCI标准镜像的工具,可以用来替代docker build
在常见的linux发行版中可直接通过包管理工具安装使用
# centos
yum install buildah
# ubuntu/debian
apt install buildah
# alpine
apk add buildah
其他发行版安装方法详见 github,本文仅记录如何在容器中使用buildah
后来在构建复杂镜像时,发现还有不少坑待解决,本文仅供参考
buildah容器中使用
quay.io/containers/buildah
是官方提供的镜像,不加参数直接启动容器,会出现Operation not permitted
和写入相关错误
加上下面三个参数后可正常使用
# 运行buildah容器
docker run -it \
--security-opt seccomp=unconfined \
--security-opt apparmor=unconfined \
-v /tmp/buildah:/var/lib/containers \
quay.io/containers/buildah:latest sh
# 进入容器sh后,使用buildah命令
buildah -h
参数解释
--security-opt seccomp=unconfined
取消容器对系统调用限制
--security-opt apparmor=unconfined
取消容器的使用资源限制
-v /tmp/buildah:/var/lib/containers
必须挂载一个目录到/var/lib/containers
alipine容器中使用
其他centeos、ubuntu、debian等liunx容器步骤一致
# 运行alpine容器
docker run -it \
--security-opt seccomp=unconfined \
--security-opt apparmor=unconfined \
-v /tmp/buildah:/var/lib/containers \
alpine sh
# 进入容器sh后操作
# 国内可更换下软件源
sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
# 安装buildah
apk update && apk add buildah
# 使用buildah命令
buildah -h
https://github.com/containers/buildah/issues/2262
https://github.com/containers/buildah/issues/867
https://github.com/containers/buildah/blob/main/install.md