KubeSphere DevOps 流水线如何去 Docker
FeynmanK零SK贰SK壹S
不是用 Podman 来打包编译镜像么,为啥还需要 containerd ?
RolandMa1986K零S
shaowenchen 将 docker.sock 挂载,改为 /var/lib/containers
挂载 /var/lib/containers 文件夹有什么作用?
shaowenchenK零SK贰SK壹S
这里只是描述基础环境是 containerd,以它为例进行的测试,还应该测试一下cri-o、isula等。
shaowenchenK零SK贰SK壹S
存储 podman 的数据,需要挂外部存储。
RolandMa1986K零S
shaowenchen 这块作用类似于docker image 本地缓存吧。可以说明一下,或提供个使用pvc的例子
为什么要用特权模式呢?是有什么地方有限制吗?
您好,我按照上述去构建流水线,其中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而导致,但没有什么头绪。
您好,参照上面的文档,使用podman去构建镜像和推送后,最后一个步骤需要部署到k8s集群中,需要给crictl配置私有镜像仓库,请问您这边有具体的配置详情吗?
我参照官方文档 https://github.com/containerd/containerd/blob/master/docs/cri/registry.md ,配置后重启containerd,通过crictl info能看到配置的镜像仓库和认证的账号密码,但去拉取镜像,就提示401 未认证,debug显示Auth为nil。
若使用crictl –creds 指定账号密码,则可以拉取成功,是否是我漏配置了什么呢?
shaowenchenK零SK贰SK壹S
可能是需要挂载配置文件,运行环境和主机环境不是一个环境。直接用 Podman 不好使么?
用podman构建镜像和推送镜像是ok的,但是k8s集群里面是用的crictl,它没有凭据去私有仓库中拉取镜像,目前已通过配置config.toml解决了。
hk1993K零S
装podman报错咋办
hk1993K零S
[未知用户] 要在devops-jenkins对应的节点服务器上安装podman. 不用流水线实时命令就好了
- 已编辑
有几个疑问:
- ln -s /usr/bin/podman /usr/bin/docker,这样在 sh ’docker ….'这样的命令中是会报docker: command not found 的错误的
- 安装podman是不是就不再像docker那样使用K8s node上的docker了?而是直接使用这个容器里的podman来工作。因为我看到没有像docker那样把K8s node上的contaierd的socket挂载进去
[未知用户] 这里不是挂载类似docker的socket来使用K8s node上的containerd么?只是做存储用么?