jenkins远程调用docker
宿主机
初步框架如下,相当于有
1)svn服务器
2)docker jenkins服务
3)docker测试环境DM
4)自动化测试服务DM_Test
1.使用docker-compose 创建jenkins容器(比直接启动docker 容器更好用)
/docker/jenkins/data 放置jenkins数据
(如果从无开始建立jenkins,启动docker compose不要进行数据卷挂载,先启动再用docker cp把Jenkins容器中的数据复制到data目录后,再挂载,以实现持久化)
/docker/jenkins/docker-compose.yml,注意docker的socket共享
version: '2' services: jenkins: restart: always image: jenkins/jenkins:lts container_name: jenkins expose: - "8080" - "50000" ports: - "8080:8080" - "50000:50000" environment: JAVA_OPTS: "-Djava.awt.headless=true -Duser.timezone=Asia/Shanghai" volumes: - /var/run/docker.sock:/var/run/docker.sock # 将宿主机的 Docker 程序挂载到 Jenkins 容器内部 - /usr/bin/docker:/usr/bin/docker:ro - ./data:/var/jenkins_home
启动docker-compose up -d,其他命令详见docker-compose -h内容
最终compose详情
2.配置docker远程连接
有2种方式,可参考https://zhuanlan.zhihu.com/p/94224305
1)tcp无密码,不安全
2)tls证书
由于我用虚拟机,直接简单整了个方法1)
修改 /lib/systemd/system/docker.service,注释掉原来那行,加入2行
ExecStart= ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
重启docker之后,验证
docker -H tcp://192.168.101.66:2375 ps
3.构建jenkins任务
基本操作跳过,新手多看看博客教程,主要看 jenkins调用远程docker主机来构建
Jenkins需安装插件 docker-build-step,系统管理>系统配置>配置docker builder
任务中配置docker命令,
构建日志如下
当然,也可以通过创建自定义镜像并push到仓库,再让docker去拉取该镜像就行