本篇告诉你:
- 如何在 Jenkins 中添加一个远程 Docker 作为构建项目的 Cloud
- 如何在这个 Cloud 中指定代码仓库并打包 Docker 镜像
- 将镜像 push 到官方的 Docker Hub 仓库
实验前提:
两台服务器,一个跑Jenkins,另一台运行Docker服务端(注意需要开放远程访问)
目前Docker已经成为众多流水线中关键的组成部分之一。 容器化具有的简单性,灵活性以及隔离性可以让我们定制特定的而且能够精确重复的环境。容器化部署也越来越流行。
关于Docker的基本概念和使用方法,可以参见我写的系列。
这里我需要两台主机(测试时可以是同一个机器),一台运行Jenkins,另一台运行Docker,作为Jenkins的代理节点。
当Jenkins启动pipeline工作时,同时连接并启动这个代理节点,由他完成构建镜像的工作,当流水线完成之后,Jenkins会停止并删除运行这些镜像的容器,使用这种方法需要配置Docker插件
好处:Jenkins master 节点只负责调控,具体的构建任务下放到Docker代理节点中去,解决master空间不够等问题
安装插件之后Jenkins的系统配置页面会多出一个Cloud部分。 需要填写连接Docker的配置信息 Name: 给Docker主机起个别名 Docker Host URI: 如 tcp://192.168.10.10:2375
,连接本机Docker,如果连其他主机上的Docker服务端,需要Docker宿主机开放远程访问,具体见Docker 学习系列21 远程连接Docker
集成Docker插件后,在管理Jenkins页面中会多出一个Docker入口
点击后能看到配置过的分配给Jenkins实例的Docker服务器列表
再点进去能看到正在运行的容器和拥有的镜像
Cloud 构建Docker镜像并上传到指定仓库
接下来我们新建一个 freestyle 项目
配置代码仓库,注意仓库中要有Dockerfile,以我的这个公开仓库为例
Build - Add build step 添加新的构建步骤 - Build / Publish Docker Image
- Directory for Dockerfile: 因为Dockerfile就在代码中的根目录,这里不填
- Cloud:选择刚刚配置的 Docker Cloud 名字
- Image: 要打包上传的镜像名
- Registry Credentials: 注意这里,要添加一个类型是username/password的可以登录docker仓库的credentials
- 构建,查看输出信息
- 检查 Docker Hub 可以看到刚刚上传的镜像
同时Docker Cloud中也多出了一个刚刚打包的镜像
参考
https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-filehttps://www.jianshu.com/p/2ad009ae95adjenkins slave docker容器化