zoukankan      html  css  js  c++  java
  • 使用docker快速部署Jenkins

    先安装配置docker

    安装不说了,注意非root用户执行docker会报docker.sock访问权限错误,需要把自己加到docker组。

    然后因为国内访问dockerhub速度太慢,所以需要配置国内dockerhub镜像。这里用中科大的镜像:

    sudo vim /etc/docker/daemon.json
    

    内容如下(dns设置可有可无):

    {
        "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"],
        "dns": ["8.8.8.8", "8.8.4.4"]
    }
    

    然后重启dockerd:

    sudo systemctl restart docker
    

    拉取并运行Jenkins

    docker pull jenkins/jenkins:lts-alpine
    

    (我直接root了,你们注意安全)

    创建挂载用的工作目录(打算把数据保存在~/jenkins/data

    cd
    mkdir -p jenkins/data
    sudo chown 1000:1000 jenkins -R  # jenkins镜像默认是用1000这个用户执行,不修改所有会无法创建文件
    

    然后我们写个启动脚本,参考(jenkinsci官方github)[https://github.com/jenkinsci/docker/blob/master/README.md]即可:

    cd ~/jenkins
    vim init.sh
    
    # 内容如下:
    
    cd `dirname $0`  && echo "PWD: "$(pwd)
    
    docker run -d --name myjenkins 
        --net=host 
        -v `pwd`/data:/var/jenkins_home 
        --restart=always 
        -e TZ="Asia/Shanghai" 
        --env JAVA_OPTS="-Djava.util.logging.config.file=/var/jenkins_home/log.properties" 
        --add-host=dockerhost:172.17.0.1 
        jenkins/jenkins:lts-alpine
    
        # -p 8080:8080 
        # -p 50000:50000 
    

    然后创建容器并运行:

    cd ~/jenkins && bash init.sh
    

    然后访问8080端口初始化Jenkins,再设置项目就行了。如果要备份还原项目,直接备份还原data文件夹就行了。(data就是主机直接安装Jenkins时的/var/lib/jenkins目录)

    如何使用Docker内的Jenkins

    接下来的问题就是如何使用Jenkins在主机或其他容器部署项目了。(我猜你也不会想把项目和Jenkins部署在同一个容器的)

    一开始我挺疑惑Docker中的Jenkins怎么调用主机的程序,查了资料还发现了 使用fabric进行ssh 的操作,感觉这还挺麻烦的。

    其实一番鼓捣下来发现Jenkins是可以配置节点的,而且Jenkins直接就可以ssh连接各节点,把各项目指派到对应的节点去部署。这个图反应了任务和节点的关系:

    所以,要在Docker所在主机部署,可以直接把主机配置为Jenkins的某个节点:

    1. 配置主机作为Jenkins的一个节点:(对于docker中的Jenkins环境,我们就让它是master节点,不给它分配任务就行了)

    2. 配置项目,指定对应的标签或节点名字即可:(用标签可以对应多个节点,注意不要有多余空格)

    在Docker所在主机部署大概就这样。

    称Jenkins所在主机为A,如果想到其他机器(比如服务器B)部署项目(比如项目C),也不需要在B中安装Jenkins,只要在A的Jenkins控制台新建节点就行了,配置好B的地址(ip/url)和ssh密钥,然后在A的Jenkins控制台新建项目C,限制在B对应的节点执行。 (注意:密钥用户要有部署项目的操作权限)





    (默认Jenkins自身所在的环境是master节点)

    • master节点的执行者数量设为0可以禁用它,其他节点也可以设为0禁用,而不需要删除,这样可以保留配置

    Docker修改hosts方法 https://www.cnblogs.com/amyzhu/p/10957667.html

  • 相关阅读:
    Berkeley DB(五) 补充
    案例研究–亚马逊服务中断,数据库崩溃–我们恢复数据库且无数据损失
    源代码管理十诫
    menucool
    如何:使用變數視窗將變數加入封裝
    翻转句子中单词的顺序
    【科研论文】新型脉冲电子围栏网络化系统设计
    Java对泛型的支持(二)
    springmvc camel mybatis集成实例及分析
    xtrabackup全备方案,备份恢复全过程记录
  • 原文地址:https://www.cnblogs.com/dylanchu/p/12254248.html
Copyright © 2011-2022 走看看