运行在 Kubernets 集群上的 Jenkins 如何进行 docker build 任务?


前言:

  • 当你在运行在 Kubernets 集群上的 Jenkins 中配置一个需要进行 Docker build 的
    job 时,你可能会遇到下图这个问题:


    image.png

what?

docker: not found,我总不能给 Jenkins 这个 pod 再安装一个 Docker 引擎吧!
  • 简单来说就是你的容器内部无法找到 docker 这个命令,接着往下看。

怎么解决?

一、让 Jenkins 这个 Pod 支持运行 docker build

1 . 修改 Jenkins 的配置文件。因为我的 Jenkins 是通过 Deployment 创建的,所以我修改 Deployment 就好,请对应你环境的 Jenkins 应用的配置文件。

$ kubectl edit deployments.apps jenkins 
    volumes:
          ... ...
      - hostPath:
          path: /var/run/docker.sock
          type: ""
        name: docker-sock
      - hostPath:
          path: /usr/local/bin/docker
          type: ""
        name: docker-cmd

        volumeMounts:
        ... ...
        - mountPath: /var/run/docker.sock
          name: docker-sock
        - mountPath: /usr/local/bin/docker
          name: docker-cmd


  1. 让 Jenkins 执行 job 的那个系统用户有对 docker 对执行权限,777 吧! 没毛病!
chmod 777 /var/run/docker.sock

否则会提示你没有权限:


image.png
  1. 如果你还需要将 build 好的 image push 到你的私有仓库,还需要在你的构建任务中,配置 docker login
echo `pwd`
echo `whoami`
docker build -t nginx:${BUILD_NUMBER} .

docker login 172.16.10.77:30006 -uadmin -pHarbor12345

docker tag nginx:${BUILD_NUMBER} 172.16.10.77:30006/public/nginx:${BUILD_NUMBER}
docker push 172.16.10.77:30006/public/nginx:${BUILD_NUMBER}
docker rmi nginx:${BUILD_NUMBER}
docker rmi 172.16.10.77:30006/public/nginx:${BUILD_NUMBER}
image.png

二、再次运行 Jenkins 上的 docker build 构建任务

  1. 点击 Build Now,立即构建


    image.png
  2. 查看 console out 输出,可以看到 docker build 、docker tag 、docker push 等任务都已经执行成功!


    image.png

    image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容