• DevOps
  • kubeShpere v4.1.3 devops 1.1 maven容器没有docker命令

创建部署问题时,请参考下面模板,你提供的信息越多,越容易及时获得解答。
发帖前请点击 发表主题 右边的 预览(👀) 按钮,确保帖子格式正确。
你只花一分钟创建的问题,不能指望别人花上半个小时给你解答。

操作系统信息
AWS EKS linux amd64 aws-k8s-1.32

Kubernetes版本信息
1.32

容器运行时
containerd

KubeSphere版本信息
v4.1.3 已有EKS集群安装

问题是什么

maven容器中执行shell没有docker命令,看了podTemplate 文件,应该是挂载的问题,暂时未找到解决方案

用podman一样的

5 天 后
5 天 后

docker与podman的别名不生效 可以在原镜像的基础上新增一个软连接

# 使用指定的基础镜像
FROM swr.cn-southwest-2.myhuaweicloud.com/ks/kubesphere/builder-maven:v3.2.0-podman
RUN ln -s /usr/bin/podman /usr/bin/docker

2 个月 后

镜像:image:builder-maven:v3.2.0-podman

自带的podman 就是类似于docker,用来处理构建与推送等命令的

你可以在节点或者DevOps发布期间的容器内使用:podman –help 命令查看到 build命令标签

docker build -t 镜像名称:版本 -f dockerfile ./

改为

podman build -t 镜像名称:版本 -f dockerfile ./

几乎没有什么变化

另外,我个人使用的是Nexus本地仓库,协议是http,导致podman在执行 dockerfile的from时候,提示

http: server gave HTTP response to HTTPS client

我的解决办法是在Jenkinsfile构建前的任意阶段中增加

# 在容器内创建正确的配置文件

cat > /etc/containers/registries.conf << EOF

# 定义不安全镜像仓库配置段

# 该段下列出的仓库地址将跳过TLS证书验证

[registries.insecure]

# 实际仓库地址列表(从环境变量$REGISTRY_PUSH获取值)

# 注意:方括号表示数组格式,可包含多个地址

registries = [‘$REGISTRY_PUSH’]

EOF