一:本文目的
在实际工作场景中,经常遇到因服务器硬件故障或资源不足时,需要把运行的服务迁移到其他服务器或虚拟机上;常规做法是在新服务器或虚拟机上重新部署系统,然后导入备份的数据,测试通过后切换流量到新环境,停止旧的服务。从这一过程可以看到,相当的耗费时间,如果系统是自己部署的,还好说,如果不是那就很尴尬了,不知道安装哪些插件,拷贝哪些秘钥。直到容器技术的出现,打破了这一壁垒。 代表技术就是docker,通过把linux发行版和需要的业务系统打包成镜像,在任意一个linux内核系统上就可以运行。在此基础上, 结合docker-composer可以实现业务系统运行时产生的静态资源和动态资源落地到本地盘。此时如果遇到服务器或业务系统迁移,拷贝基础镜像和数据目录到新服务后启动即可。
二:结果展示
2.1 基础镜像
2.2 当前运行的容器
2.3 服务器上对应的文件目录 (data目录里的文件是jenkins在容器里运行时产生的所有文件)
三:过程概述
1.安装docker和docker-compose.
2.准备基础镜像 : 从dockerhub上下载jks镜像使用,也可以启动后按照自己的方式二次封装打镜像,或下载发行版后安装jenkins打包为镜像(直接安装或使用dockerfile)。
3.编写yaml文件
4.启动
四:过程细节
1.安装docker和docker-compose,并下载基础镜像。 这里我使用自己打的镜像。
2.编写yaml文件
# cat docker-compose.yml
version: '3.8'
services:
jenkins:
container_name: jenkins-lts
image: registry.cn-beijing.aliyuncs.com/cupli/jenkins-lts
restart: always
user: root
ports:
- 8082:8080
- 50000:50000
privileged: true
environment:
JAVA_OPTS: '-Djava.util.logging.config.file=/var/jenkins_home/log.properties'
volumes:
- /etc/localtime:/etc/localtime:ro
- ./data/jenkins_home:/var/jenkins_home
- ./data/yunwei-script:/opt/yunwei-script
- ./data/.ssh:/root/.ssh
networks:
- jenkins-lts
networks:
jenkins-lts:
driver: bridge
3.启动
# cat start.sh
#!/bin/bash
chmod +x ./docker-compose
./docker-compose up -d
./docker-compose ps
#stop
#./docker-compose stop
完!