Jenkins基础篇--Docker容器部署

容器部署Jenkins的优势:

1、安全。容器之间的进程是相互隔离的,单独容器环境稳定,宿主机中环境变量的修改,不容易影响容器的运行结果。

2、更轻松地部署和扩展。容器可方便迁移,一次交付,多次利用,容器可将打包好的jenkins环境迁移到其他设备中。

3、容器启动迅速,环境恢复方便。容器修改可追溯,可通过定时生成docker镜像,保证后续即使出现环境异常,也能快速回复,此外,创建容器实例比创建虚拟机示例快得多。

前提条件:

  1. 安装docker:
    1. 参考文档Docker基础篇--安装docker环境_windows10安装使用docker_傻乎乎的胖鱼的博客-CSDN博客
  2. 安装docker-composer:
    1. 安装python3,pip list没问题后可用pip安装:sudo pip install docker-compose
    2. 赋予权限:chmod +x /usr/local/bin/docker-compose
    3. 检查是否安装成功:docker-compose -v
  3. 选取最新的jenkins镜像,否则jenkins下载插件会失败,原因是jenkins版本不匹配:
    1. 执行命令:docker pull jenkins/jenkins:Its 
  4. 映射路径:sudo chown -R 1000:1000 /home/docker/jenkins(这个本地路径可自行修改,后面会用到该路径)

两种方式:

  1. docker run的方式,直接运行命令行
    1. 创建一个属于 Jenkins 容器的 docker 网络:
      1. 执行命令:docker network create jenkins_network(网络名)
    2. 运行 jenkins 容器:
      1. 执行命令:docker run --name jenkins-in-docker --network jenkins_network(网络名) --publish 8080(访问的端口号,可设置):8080 --publish 50000:50000 --volume /home/docker/jenkins(前提条件4映射路径):/var/jenkins_home --volume /usr/bin/docker:/usr/bin/docker --volume /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts
    3. 观察容器运行的打印,看到日志“Jenkins is fully up and running”,说明 jenkins 启动成功
    4. 浏览器访问 http://服务器IP:8080,如果访问不了,确保自己防火墙开放了 8080 端口
    5. 这时如果ctrl+c退出容器,则jenkins服务关闭,执行命令时可以加上-d,保证容器后台执行;或者docker start docker_jenkins(容器名),可以重启容器
    6. ​浏览器访问 http://服务器IP:8080,进入jenkins配置界面,Jenkins配置可参考:Jenkins基础篇--linux安装Jenkins_傻乎乎的胖鱼的博客-CSDN博客

  2. 采用 docker-compose 方式运行 Jenkins 容器
    1. 创建一个yaml文件
      1. vim infrastructure-docker-compose.yml(名字可修改)
      2. 在yml中配置
      3. version: '3.7'
         
        services:
          jenkins-in-docker:
            image: jenkins/jenkins:lts
            container_name: jenkins-in-docker
            privileged: true
            restart: unless-stopped
            ports:
              - 8080:8080
              - 50000:50000
            environment:
              JAVA_OPTS: "-Xmx2048m -Xms1024m -Djava.security.egd=file:/dev/./urandom -Duser.timezone=Asia/Shanghai -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"
            volumes:
              - ./jenkins_home:/var/jenkins_home
              - /usr/bin/docker:/usr/bin/docker
              - /var/run/docker.sock:/var/run/docker.sock
            networks:
              - jenkins_network
            deploy:
              resources:
                limits:
                  memory: 4096M
                  cpus: '2'
         
        networks:
          jenkins_network:
            external: true
    2. 创建一个sh文件,执行docker-composer命令
      1. vim startup-infrastructure-docker-compose.sh(脚本名称可修改)
      2. 脚本内容
      3. #!/usr/bin/env bash
         
        # 设置docker网络名称和docker-compose文件
        docker_network=jenkins_network
        docker_compose_file=infrastructure-docker-compose.yml
         
        # 输出下docker-compose文件内容
        echo "The compose file as below: "
        docker-compose -f ${docker_compose_file} config
         
        nw=$(docker network ls | grep ${docker_network} | awk '{print $1}')
        if [[ ${nw} ]]; then
          docker-compose -f ${docker_compose_file} --compatibility up --remove-orphans -d
        else
          docker network create ${docker_network} && docker-compose -f ${docker_compose_file} --compatibility up --remove-orphans -d
        fi
    3. 给sh脚本赋权限,并执行该脚本
      1. chmod +x startup-infrastructure-docker-compose.sh
      2. ./startup-infrastructure-docker-compose.sh
    4. 查看容器:docker ps
    5. 可查看容器运行日志,执行命令:docker logs -f 容器名 --tail=50,看到日志“Jenkins is fully up and running”,说明 jenkins启动成功​​​​​​​
    6. 浏览器访问 http://服务器IP:8080,进入jenkins配置界面,Jenkins配置可参考:Jenkins基础篇--linux安装Jenkins_傻乎乎的胖鱼的博客-CSDN博客

猜你喜欢

转载自blog.csdn.net/xch622114/article/details/131384243