跳过正文
Background Image
  1. Posts/

定制一个 Docker 版 Jenkins 镜像

·591 字·2 分钟· ·
沈显鹏
作者
沈显鹏
目录

对于如何备份 Jenkins 除了用 Jenkins 插件来定期备份之外,如果把 Jenkins 安装到 Docker 里,定期备份一个 Docker Image 最后传到 Artifactory 中,也是一个不错的方案。

安装 Docker 版 Jenkins
#

在 CentOS 上安装 Docker 版 Jenkins,这里推荐用 Long-term Support (LTS) 版本,可以从 Jenkins 官网下载

# 下载指定 lts 版本 2.130
sudo docker pull jenkins/jenkins:2.130
# 运行指定 docker Jenkins
sudo docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:2.130
# 如果想下载最新的 lts 版
sudo docker pull jenkins/jenkins:lts
# 运行最新的 lts 版 docker Jenkins
sudo docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts

启动成功后即可打开 http://hostname:8080/ 网址

修改登录密码
#

显示所有的 image 以及正在运行的 container

# 列出来所有 image
sudo docker image list
# 列出当前运行的 container
sudo docker ps
# 进入容器,使用 -it 参数
sudo docker exec -it 39bc7a8307d9 /bin/bash
# 查看默认 admin 密码
jenkins@a6195912b579:/$ cat /var/jenkins_home/secrets/initialAdminPassword
5193d06c813d46d3b18babeda836363a

建议登录之后,修改 admin 密码,方便下次登录

sudo docker commit 39bc7a8307d9 myjenkins:v0.1

将宿主机目录映射到 Jenkins Docker 中
#

如果想让 Docker 里的 Jenkins 可以访问宿主机的目录,在运行 docker 时使用 -v 参数进行 mount volume

sudo docker run -p 8080:8080 -p 50000:50000 --name mydata -v /data/backup:/home/backup jenkins/jenkins:2.130
# 映射成功,可以看到宿主机上的备份文件了
jenkins@c85db3f88115:/home/backup$ ls
FULL-2019-09-14_02-00  FULL-2019-09-28_02-00  FULL-2019-10-19_02-00  FULL-2019-11-02_02-00  FULL-2019-11-23_02-00
FULL-2019-09-21_02-00  FULL-2019-10-05_02-00  FULL-2019-10-26_02-00  FULL-2019-11-09_02-00  FULL-2019-11-30_02-00

将 Jenkins Docker Image 保存在 Artifactory
#

下载并安装 Artifactory 企业版或是 JFrog Container Registry,注意 Artifactory Open Source 版本不支持 Docker Registry。

例如我的 JFrog Container Registry 是:dln.dev.mycompany.com:8040,并创建了一个 docker repository 叫 docker-local。

上传 Docker Image 一共分为三步:

docker login

#  在登录前需要添加如下配置到 /etc/docker/daemon.json
{
"insecure-registries" : ["dln.dev.mycompany.com:8040"]
}
# docker login <DOCKER_SERVER>, example below:
sudo docker login dln.dev.mycompany.com:8040

docker tag

# docker tag <IMAGE_ID> artprod.mycompany/<DOCKER_REPOSITORY>:<DOCKER_TAG>, example below:
sudo docker tag myjenkins:v0.1 dln.dev.mycompany.com:8040/docker-local/myjenkins:v0.1

docker push

# docker push artprod.mycompany/<DOCKER_REPOSITORY>:<DOCKER_TAG>, example below:
$ sudo docker push dln.dev.mycompany.com:8040/docker-local/myjenkins::v0.1
The push refers to repository [dln.dev.mycompany.com:8040/docker-local/myjenkins]
98d59071f692: Pushed
af288f00b8a7: Pushed
4b955941a4d0: Pushed
f121afdbbd5d: Pushed
15.10: digest: sha256:a3f5e428c0cfbfd55cffb32d30b1d78fedb8a9faaf08efdd9c5208c94dc66614 size: 1150

登录 JFrog Container Registry 刷新就可以到已经上次的 Image 了。说明:截图是我上传的另外一个镜像 ubuntu:15.10

举例

相关文章

如何通过 Jenkins 进行资源的锁定和释放
·901 字·2 分钟
本文介绍了如何使用 Jenkins 的 Lockable Resources 插件来管理和锁定资源,确保在多任务环境中资源的独占性和安全性。
通过 Jenkins 来提交修改的代码 git push by Jenkins
·439 字·1 分钟
如何通过 Jenkins Pipeline 脚本来提交修改的代码到 Git 仓库,包括克隆仓库、修改代码和推送更改等步骤。
Jenkins Linux Agent 配置
·353 字·1 分钟
本文提供了 Jenkins Linux Agent 的逐步配置指南,包括 Java 运行时的准备、节点创建以及常见问题的排查方法。
Jenkins Windows Agent 配置
·608 字·2 分钟
本文提供 Jenkins Windows Agent 的详细配置步骤,包括 Java 运行时准备、节点创建以及常见问题的排查方法。
Jenkinsfile 配置
·256 字·1 分钟
本文介绍了如何使用 Jenkinsfile 配置 Jenkins Pipeline,包括构建、测试和发布阶段的示例,以及如何处理邮件通知。
Docker 版本概述
·278 字·1 分钟
概述 Docker 的不同版本,包括社区版、企业版和企业级解决方案,适用于不同规模和需求的用户。