在 CI/CD(Kubernetes 上带有运行程序的 gitlab CI)的范围内,我想测试一个脚本,该脚本运行一个one shot command
包装在 docker 映像中的脚本。
因为跑步者没有特权并且不受我控制,所以我试图避免dind
并寻求一种低级别的解决方案来运行一次性容器:runc
.
所以我试图运行busybox with runc
一个alpine docker container
FROM alpine
RUN apk add runc skopeo umoci \
&& mkdir /tmp/benj && cd /tmp/benj
WORKDIR /tmp/benj
RUN skopeo copy docker://registry.hub.docker.com/library/busybox oci:busybox:latest \
&& umoci unpack --image busybox --rootless bundle
然后,我在没有特定参数的情况下构建并运行:
docker build -t runc .
docker run -it --rm runc
当我用runc运行busybox时,在docker容器中被拒绝:
/tmp/benj # runc --root /tmp/runc run -b bundle ctr
WARN[0000] unable to get oom kill count error="no directory specified for memory.oom_control"
ERRO[0000] container_linux.go:380: starting container process caused: process_linux.go:385: applying cgroup configuration for process caused: mkdir /sys/fs/cgroup/cpuset/ctr: read-only file system
有可能吗?
是否有一些我应该使用的替代品(如 rkt)?