Docker 部署的 Jenkins 调用 Docker 客户端

138次阅读
没有评论

共计 755 个字符,预计需要花费 2 分钟才能阅读完成。

背景

在 jenkins 中调用 docker 命令执行镜像的构建、推送是很常见的场景。

如果 jenkins 使用了 docker 方式部署,这类问题统称为Docker in Docker”(DinD)。

方案:共享宿主机 docker 环境

此案例中,jenkins 使用了 docker-compose 管理,完整的配置文件如下:

services:
  jenkins:
    image: jenkins/jenkins:lts
    ports:
      - "8081:8080"
    volumes:
      - /disk-st4000vx015-4t-no1/jenkins-data:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/local/bin/docker:/usr/local/bin/docker
      - /etc/docker:/etc/docker
    group_add:
      - "0"
    environment:
      TZ: Asia/Shanghai
  ssh-agent:
    image: jenkins/ssh-agent

关键配置如下:

# 映射主机的docker环境,包含套接字,command,配置文件
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/local/bin/docker:/usr/local/bin/docker
      - /etc/docker:/etc/docker

# 添加宿主机 docker 运行用户的 group id。避免权限问题。jenkins 运行用户未必有权限访问宿主机docker。
    group_add:
      - "0"

从安全性考虑:

  • 挂载 Docker socket 会给予 Jenkins 容器对宿主机 Docker 守护进程的完全访问权限;
  • 生产环境,确保做好安全隔离。

本文属于专题:Jenkins

正文完
 
pengyinwei
版权声明:本站原创文章,由 pengyinwei 2024-11-15发表,共计755字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处:https://www.opshub.cn
评论(没有评论)