一:本文目的

      在实际工作场景中,经常遇到因服务器硬件故障或资源不足时,需要把运行的服务迁移到其他服务器或虚拟机上;常规做法是在新服务器或虚拟机上重新部署系统,然后导入备份的数据,测试通过后切换流量到新环境,停止旧的服务。从这一过程可以看到,相当的耗费时间,如果系统是自己部署的,还好说,如果不是那就很尴尬了,不知道安装哪些插件,拷贝哪些秘钥。直到容器技术的出现,打破了这一壁垒。  代表技术就是docker,通过把linux发行版和需要的业务系统打包成镜像,在任意一个linux内核系统上就可以运行。在此基础上, 结合docker-composer可以实现业务系统运行时产生的静态资源和动态资源落地到本地盘。此时如果遇到服务器或业务系统迁移,拷贝基础镜像和数据目录到新服务后启动即可。


二:结果展示

2.1 基础镜像

【容器虚拟化】通过docker-composer部署jenkins_JAVA

2.2 当前运行的容器

【容器虚拟化】通过docker-composer部署jenkins_docker_02

2.3 服务器上对应的文件目录 (data目录里的文件是jenkins在容器里运行时产生的所有文件)

【容器虚拟化】通过docker-composer部署jenkins_JAVA_03

三:过程概述

1.安装docker和docker-compose.

2.准备基础镜像 : 从dockerhub上下载jks镜像使用,也可以启动后按照自己的方式二次封装打镜像,或下载发行版后安装jenkins打包为镜像(直接安装或使用dockerfile)。

3.编写yaml文件

4.启动


四:过程细节

1.安装docker和docker-compose,并下载基础镜像。 这里我使用自己打的镜像。

【容器虚拟化】通过docker-composer部署jenkins_容器_04

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
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.

3.启动

# cat start.sh 
#!/bin/bash
chmod +x ./docker-compose
./docker-compose up -d
./docker-compose ps

#stop
#./docker-compose stop
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

完!