在容器中使用buildah构建镜像

在容器中使用buildah构建镜像_第1张图片

简介

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

你可能感兴趣的:(docker,buildah)