在 Docker 容器中使用 abuild rootbld 构建
容器权限
abuild-rootbld 使用 bwrap 创建一个非特权沙箱。为了允许在 Docker 容器中运行的 高山 系统中使用 bwrap,容器需要额外的权限。
最不安全的解决方案
只需使用 --privileged 参数启动容器,或在 compose file 中使用它。
这仅在 Docker (或 Podman) 以 root 身份运行时才有可能。
使用修改后的 seccomp 配置文件 的安全解决方案
从 github.com/moby/moby 获取默认的 seccomp profile。
并将这个新对象添加到现有的 syscalls-JSON-Array 中
{ "syscalls": [ { "names": [ "clone", "mount", "pivot_root", "setdomainname", "sethostname", "umount2" ], "action": "SCMP_ACT_ALLOW" } ] }
将扩展后的配置文件保存到类似 seccomp-bwrap.json 的文件中。
没有预定义的匹配 capability 提供 pivot_root syscall。
新创建的文件可以通过以下方式之一使用
- 使用参数
--security-opt seccomp=./seccomp-bwrap.json
运行容器。请参阅 reference 和 security seccomp。 - 在 compose file 中指定使用此配置文件
security_opt: - seccomp=./seccomp-bwrap.json
运行 abuild
启动容器
docker start <容器名称>
使用 ssh
或 docker exec
连接到容器。
net 选项
默认情况下,rootbld 沙箱没有网络连接。
如果构建过程需要网络连接以下载构建命令期间的附加文件,则必须在 APKBUILD 文件中指定 net 选项。
abuild rootbld
在您的 git 仓库路径中运行
abuild rootbld