0

在 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)?

4

0 回答 0