专栏首页持续集成定制一个 Docker 版 Jenkins 镜像

定制一个 Docker 版 Jenkins 镜像

对于如何备份 Jenkins 除了用 Jenkins 插件来定期备份或是定期将配置文件上传到 Git,最近尝试了另外一种方式:就是把 Jenkins 安装到 Docker 里,定期备份一个 Docker Image 最后传到 Artifatory 中。

使用 Docker 版的 Jenkins 在启动、升级、备份,迁移到云都会更加方便和灵活。

安装 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

将宿主机目录映射到 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

上传 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-local repository 共分为三步:

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,仅作为示例。

本文分享自微信公众号 - DevOps攻城狮(DevOps-Engineer),作者:Peter Shen

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • GitStats - Git 历史统计信息工具

    如果你是研发效能组的一员或者在从事 CI/CD 或 DevOps,除了提供基础设施,指标和数据是也是一个很重要的一环,比如需要分析下某个 Git 仓库代码提交情...

    Peter Shen
  • 如何采用DevOps模式

    向 DevOps 的过渡需要文化理念和心态上的转变。简单来说,DevOps 的宗旨就是消除两个传统上孤立的团队(开发团队和运营团队)之间的壁垒。有些组织甚至没有...

    Peter Shen
  • 通过 Jenkins 定期自动给老板提供 Git 仓库的多维度代码分析报告

    在上一篇里 GitStats - Git 历史统计信息工具,我已经给老板提供了他想看的所有仓库的 Git 提交历史分析报告了,并且把报告都部署到了一台虚拟机的 ...

    Peter Shen
  • 性能环境之docker操作指南1(全网最全)

    4.添加官方密钥 执行该命令时,如遇到长时间没有响应说明网络连接不到docker网站,需要使用代-理进行。

    高楼Zee
  • docker学习(1) 安装

    docker是啥就不多讲了,简言之就是更轻量、更牛叉的新一代虚拟机技术。下面是安装步骤: 一、mac/windows平台的安装 docker是在linux内核基...

    菩提树下的杨过
  • Docker-如何清理磁盘占用

    最近开始打包我们的一些应用,不得不说,我已经爱上了Docker这个工具。在AWS EC2上,它的存在使我们的工作方便了许多。然而,我们遇到的唯一问题是Docke...

    Shedray大数据专栏
  • Docker1.12尝试

    前言:在docker1.12中默认增加了swarm mode 编排功能,并且官方支持更多的插件来进行docker的网路和外接存储插件,不过目前测试swarm m...

    BGBiao
  • Java开源博客My-Blog之docker容器组件化修改

    前言 5月13号上线了自己的个人博客,《Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦》,紧接着也在github...

    我是十三
  • K8S问题记录

    在使用habor作为镜像仓库时,默认拉取镜像是走的https,如果在安装harbor时没有设置证书,则会报错,timeout,deny之类的错误,如果没有证书的...

    dogfei
  • Windows系统下载安装docker

    Windows下载安装docker 新一极渗透测试教育培训第一课: 为什么要把docker放在第一课?      工欲善其事,必先利其器。 ...

    奶糖味的代言

扫码关注云+社区

领取腾讯云代金券