您好,我按照上述去构建流水线,其中Dockerfile中包含RUN语句,镜像就会构建失败,并提示:

+ docker build -f Dockerfile.future_k_line -t demo .
STEP 1: FROM python:3.9.0
STEP 2: ENV SOURCEDIR /opt
--> Using cache 8b24536d469dc34fc80ce772af054dd5bc41c3cdb3114e62cfe3254b8bf49bcc
--> 8b24536d469
STEP 3: COPY . $SOURCEDIR/aa
--> 4f6ed9e5258
STEP 4: WORKDIR $SOURCEDIR/aa
--> c1b5512bc5a
STEP 5: RUN rm -rf /var/lib/apt/lists/*
error running container: error creating container for [/bin/sh -c rm -rf /var/lib/apt/lists/*]: time="2021-04-01T14:11:36Z" level=error msg="systemd cgroup flag passed, but systemd support for managing cgroups is not available"
: exit status 1
time="2021-04-01T14:11:36Z" level=error msg="unable to write build event: \"write unixgram @77635->/run/systemd/journal/socket: sendmsg: no such file or directory\""
Error: error building at STEP "RUN rm -rf /var/lib/apt/lists/*": error while running runtime: exit status 1
script returned exit code 125

目前在github上podman的issue中有类似问题,但并未提供解决方法,在google上也未能找到。

参考报错信息,是由于镜像默认是systemd,无法去cgroup而导致,但没有什么头绪。

  • Wmm 回复了此帖

    您好,参照上面的文档,使用podman去构建镜像和推送后,最后一个步骤需要部署到k8s集群中,需要给crictl配置私有镜像仓库,请问您这边有具体的配置详情吗?
    我参照官方文档 https://github.com/containerd/containerd/blob/master/docs/cri/registry.md ,配置后重启containerd,通过crictl info能看到配置的镜像仓库和认证的账号密码,但去拉取镜像,就提示401 未认证,debug显示Auth为nil。
    若使用crictl –creds 指定账号密码,则可以拉取成功,是否是我漏配置了什么呢?

      leksas

      可能是需要挂载配置文件,运行环境和主机环境不是一个环境。直接用 Podman 不好使么?

      用podman构建镜像和推送镜像是ok的,但是k8s集群里面是用的crictl,它没有凭据去私有仓库中拉取镜像,目前已通过配置config.toml解决了。

      1 年 后

      [未知用户] 要在devops-jenkins对应的节点服务器上安装podman. 不用流水线实时命令就好了

      22 天 后

      有几个疑问:

      1. ln -s /usr/bin/podman /usr/bin/docker,这样在 sh ’docker ….'这样的命令中是会报docker: command not found 的错误的
      2. 安装podman是不是就不再像docker那样使用K8s node上的docker了?而是直接使用这个容器里的podman来工作。因为我看到没有像docker那样把K8s node上的contaierd的socket挂载进去

      [未知用户] 这里不是挂载类似docker的socket来使用K8s node上的containerd么?只是做存储用么?

      1 年 后
      2 个月 后

      leksas 您好,我自己打包的镜像也报这个错,有什么解决办法吗?