jenkins docker容器的备份和复用

jenkins配置文件备份:

docker cp focused_bhaskara:/var/jekins_home ./jenkins_home

其中focused_bhaskara为当前运行的jenkins容器名字,通过docker ps查看names即可得到。

docker create -v /var/jenkins_home --name jenkins-dv 

 

制作data volume容器并运行:

1.将此前备份好的jenkins配置目录jenkins_home,copy到当前目录;

2.编辑Dockerfile如下:

FROM debian:jessie

VOLUME /var/jenkins_home/

ADD jenkins_home/ /var/jenkins_home/

RUN echo "This is jenkins data volume!"

build image:

docker build -t jenkinsdv .

3.构建自己的jenkins image,myjenk。

Dockerfile如下:

FROM jenkins:latest

USER root

RUN apt-get update \

&& apt-get install -y sudo \

&& rm -rf /var/lib/apt/lists/*

RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers

#COPY apache-maven-3.3.9-bin.zip /var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven3.3.9/

RUN echo "This is jenkins data volume!"

build image:

docker build -t myjenk .

首次启动myjenk(DooD使docker命令生效):

docker run -d --name mydockerjenk -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -p 8080:8080 -p 50000:50000 myjenk

4.如此一来我们拥有两个image,分别是myjenk和jenkinsdv,运行以下命令完成jenkins的复用:

docker run --name jenkins-dv jenkinsdv

docker run -d -p 8080:8080 -p 50000:50000 --volumes-from jenkins-dv --name myjenkins myjenk

 

 

注意:假如同时启动多个jenkins容器并且同时使用相同的--volumes-from参数,那么他们共享这一个data volume并且同时向这一个data volume容器读写,有可能造成不想要的结果。

比如,我们有A,B两个jenkins容器。

A首先启动并执行job1,构建号20.

此时启动B容器,B容器job1会显示有20个构建。此时B执行一个job1构建,那么B的job1会有从1到21共计21个job1构建,而A只有20个。

此时A再次执行job1构建,则A可以看到构建22而看不到构建21,因为21是B执行的构建。同理,B看不到构建22.

 

若想要避免以上状况,可以再次开一个data volume容器并使B加载其volume启动。

还有一种处理方法就是,删除已经停止运行的共享的data volume容器,这样每个jenkins容器会重新新建一个各自的volume使用,但此时需要各自备份(见本文第一部分)。

注意:此时使用docker commit命令无法备份最新的更改!!详见https://docs.docker.com/engine/reference/commandline/commit/

时间: 2024-07-30 05:11:11

jenkins docker容器的备份和复用的相关文章

使用jenkins docker容器的坑

1.项目使用maven的时候,首先在Global Tool Configuration里面添加自动安装maven,然后在项目的构建中增加Invoke top-level Maven targets中的Maven Version里面选中刚刚添加的Maven ID,否则会报以下错误: FATAL: command execution failed java.io.IOException: Cannot run program "mvn" (in directory "/var/j

Docker中容器的备份、恢复和迁移

转自:http://www.linuxidc.com/Linux/2015-08/121184.htm 1. 备份容器 首先,为了备份Docker中的容器,我们会想看看我们想要备份的容器列表.要达成该目的,我们需要在我们运行着Docker引擎,并已创建了容器的Linux机器中运行 docker ps 命令. # docker ps Docker Containers List 在此之后,我们要选择我们想要备份的容器,然后去创建该容器的快照.我们可以使用 docker commit 命令来创建快照

无忧之道:Docker中容器的备份、恢复和迁移

原创:LCTT https://linux.cn/article-5967-1.html译者: GOLinux本文地址:https://linux.cn/article-5967-1.html 2015-8-6 15:02    评论: 2 收藏: 3 今天,我们将学习如何快速地对docker容器进行快捷备份.恢复和迁移.Docker是一个开源平台,用于自动化部署应用,以通过快捷的途径在称之为容器的轻量级软件层下打包.发布和运行这些应用.它使得应用平台独立,因为它扮演了Linux上一个额外的操作

自己学Docker:7.数据卷容器的备份、恢复

最近由于工作的原因,各种事情,忙的要死.用户发现软件有问题,也不管是不是自己操作的问题,一口就咬定是软件的问题,询问什么问题时就"有问题"三个字回应也是醉了. 烦心事过去就不说,之前一直关于Docker看到了数据卷容器,就像知道数据卷容器有什么用处.查了不少资料,最基本的用处还是利用数据卷容器来备份.恢复.迁移数据卷. 备份 我们先创建一个data容器. sudo docker run -i -t -v /data --name data c9fc7f8eec37 根据之前Docker

docker容器-快速部署Jenkins

1.在本地虚拟机环境.安装CentOS 7,并安装docker容器 2.在docker容器中执行  docker pull jenkinsci/blueocean 3.查看已经下载的Jenkins镜像 docker images 4.创建jenkins_home 启动一个 Jenkins容器 创建一个jenkins目录 mkdir /home/jenkins_home 启动一个jenkins容器 docker run --name jenkins -p 8081:8080 -p 50000:50

jenkins docker

jenkins docker 持续集成实现自动部署,方案有好多,最常用的就是打包部署(只说流程) A君: 1.jenkins 拉取代码(手动或自动),编译打包,生成要部署的安装包或者文件 2.将生成的包推送到放到dockerfile的上下文目录,进行dockerfile的 build 3.将build好的镜像文件tag标签,push到自己的docker私有仓库 4.目标主机将老的容器stop或者rm,然后pull下新的镜像启动 B君: 1.jenkins 拉取代码(手动或自动),编译打包,生成要

Docker容器基本知识

一.Docker 简介 1.1什么是Docker 简单的说Docker是一个构建在LXC之上的,基于进程容器(Processcontainer)的轻量级VM解决方案: 1.2为什么要用Docker而不是用虚拟机 在公司中的一个很大的用途就是可以保证线下的开发环境.测试环境和线上的生产环境一致.当年在 Baidu 经常碰到这样的事情,开发把东西做好了给测试去测,一般会给一坨代码和一个介绍上线步骤的上线单.结果代码在测试机跑不起来,开发就跑来跑去看问题,一会儿啊这个配置文件忘了提交了,一会儿啊这个上

docker容器的数据卷以及使用方式

            Docker容器的数据卷 想要了解Docker Volume,首先我们需要知道Docker的文件系统是如何工作的.Docker镜像是由多个文件系统(只读层)叠加而成.当我们启动一个容器的时候,Docker会加载只读镜像层并在其上(即镜像栈顶部)添加一个读写层.如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏.当删除Docker容器,并通过该镜像重新启动时,之前的更改

Jenkins Docker安装及利用Docker-build-step插件部署Docker

生产部署环境:A:192.168.1.2 B:192.168.1.3  两台服务器系统均是Centos 7.3 , Docker版本都1.12.6 操作步骤: 1.在A服务器上使用命令:docker pull jenkinsci/jenkins  获取到Docker镜像: 2.使用命令:docker run -p 8080:8080 -p 50000:50000 --name jenkins -u root -v /var/jenkins_home:/var/jenkins_home jenki