docker 学习及jenkins安装在docker上 及allure插件的安装

   日期:2024-12-27    作者:dz120 移动:http://mip.riyuangf.com/mobile/quote/61131.html

前言:如果你想使用Jenkins调用同一台服务器上的代码,那么使用docker安装jenkins不是一个好的方法,容器的隔离使得Jenkins内部缺少非常多的库包,非常难以运行程序,运行镜像之类的还蛮适合的。

##.什么是docker
Docker是基于Go语言实现的云开源项目。
Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次封装,到处运行”。

Linux 容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。将应用运行在 Docker 容器上面,而 Docker 容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作

Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。

而 Linux 容器是 Linux 发展出了另一种虚拟化技术,简单来讲, Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离,相当于是在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。

Docker可以让一个应用在任何操作系统中非常方便的运行。而以前我们接触的虚拟机,也能在一个操作系统中,运行另外一个操作系统,保护系统中的任何应用。

两者有什么差异呢

虚拟机(virtual machine)是在操作系统中模拟硬件设备,然后运行另一个操作系统,比如在 Windows 系统里面运行 Ubuntu 系统,这样就可以运行任意的Ubuntu应用了。

Docker仅仅是封装函数库,并没有模拟完整的操作系统,如图

小结

Docker和虚拟机的差异

docker是一个系统进程;虚拟机是在操作系统中的操作系统
docker体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般

Docker将用户程序与所需要调用的系统(比如Ubuntu)函数库一起打包
Docker运行到不同操作系统时,直接基于打包的函数库,借助于操作系统的Linux内核来运行

我们用的传统虚拟机如 VMware , VisualBox 之类的需要模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用。每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。

2.1 下载及配置

  • 下载命令

    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

  • 创建/etc/docker/daemon.json文件

     
  • 写入配置镜像加速

 
  • 免去sudo

     

2.2 启动服务及运行hello-world

  • 启动docker服务

     
  • 运行hello-world

      
    
     
     
    
    • 创建数据卷 一般在下
     
    
    • 查看数据卷
     
    
    • 删除数据卷
     
    

    3.4 容器

    • 查看运行过的容器(包括已经暂停的
     
    
    • 查看正在运行的容器
     
    

    3.5 删除镜像步骤

    3.5.1
    • 查看运行过的容器
     
    
    • 停止该容器运行
     
    
    • 移除该容器
     
    
    • 查看docker镜像
     
    
    • 删除该镜像
     
    
    3.6查看镜像内容器目录
    • 其中 <image_name> 是Docker镜像的名称或ID,<directory_path> 是您想要查看的目录路径。此命令将创建一个新的容器,列出指定目录中的所有文件和子目录,并在完成后立即删除该容器
     
    
     
     
    
    • -v与–mount的区别

       
    3.7进入容器内部
    • 需要容器在运行中 一般使用/bin/bash功能全一点
     
    
     
     
    

    4.1.搜索 Jenkins 镜像

     
     
     
    

    4.2.拉取镜像

     
     
    

    4.3.创建 Jenkins 挂载目录并赋予权限

     
    

    4.4.创建并启动 Jenkins 容器

     
    
    • -d:后台运行容器
    • -p 9001:8080:将容器的 8080 端口映射到服务器的 9001端口
    • -p 50000:50000:将容器的 50000 端口映射到服务器的 50000 端口 好像与jenkins相关
    • -v /usr/local/jenkins:/var/jenkins_home:将容器中 Jenkins 的工作目录挂载到服务器的 /usr/local/jenkins
    • -v /etc/localtime:/etc/localtime:让容器使用和服务器同样的时间设置
    • –restart=always:设置容器的重启策略为 Docker 重启时自动重启
    • –name=jenkins:给容器起别名
    • jenkins/jenkins:镜像名称
     
     
    

    重新启动jenkins

     
    

    查看启动日志

     
    

    4.5 jenkins国内镜像加速

     
     
    
     
     
    
    • 选择第一个安装jenkins插件

    1.点击【Manage Jenkins】->【Manage Plugins】选项。

    2.点击【可选插件】选项,右侧输入【Locale】选项。

    3.勾选【插件选项】,点击【直接安装】选项。

    4.重启Jenkins:在URL后加上【/restart】,点击【回车】,点击【是】即可。

    二、设置为中文

    1.点击【Manage Jenkins】->【Configure System】选项。

    2.找到【Locale】选项,输入【zh_CN】,勾选下面的选项,最后点击【保存】和【应用】即可
    详细操作

    4.8 重启Jenkins

    在浏览器地址最后加上即可

    4.9 能在jenkins镜像里使用docker命令

    • 可以看见目前容器是不可以使用docker命令的
      若想使用jenkins运行其它的镜像 如运行自动化测试时则需要能使用docker命令
      目的是在此镜像内操作其它容器

       
    • 停止某个镜像

       

    docker是通过 docker client 调用docker socket向docker server 发出请求

    • 找到docker client
     
    
     
     
    
    • 找到docker socket(一般都是都在这个目录下

       
     
    

    -v /usr/bin/docker:/usr/bin/docker # 文件挂载 使用同一个客户端
    -v /var/run/docker.sock://var/run/docker.sock # 文件挂载 使用同一个socket
    -u root 给予Jenkins root的权限

     
     
     
    

    5.1下载并安装docker desktop

    • 验证是否安装成功docker
     
     
    

    5.2 为python脚本制作镜像

    5.2.1 Dockfile编写
    • 基础知识
      1.关键字 指令使用大写字母
      2.执行从上到下顺序执行
      3.# 表示注释
      4.每一个指令都会创建提交一个新的镜像层

    Dockerfile :构建文件,定义了一切的步骤,源代码
    Docker images:通过DockerFile构建生成的镜像,最终发布和运行的产品!
    Docker 容器︰容器就是镜像运行起来提供服务器

    • 镜像命令( 当前路径 为Dockfile的路径
     
     
    
    5.2.3 推送镜像到dockerhub
    • 使用dockerlogin登录
     
     
    
    • 推送到docker hub

    后面是镜像名称:标签
    这是你的仓库名称philyou/study_work 推送时会推到对应的仓库 注意是公有仓库还是私有仓库

     
     
     
    

    登录dockerhub

    • 使用dockerlogin登录(笔者拉取的是私人镜像)
     
     
    
     
     
     
    

    7.1 创建jenkins(也是宿主机)的挂载目录

    之前jenkins是通过 挂载到宿主机的 目录下的
    要为allure-report 创建挂载的宿主机目录 /usr/local/jenkins的allure-result

     
     
    

    构建触发器

    • 构建后命令 把容器里生成的json和text挂载到jenkins里的工作空间里
     
     
    

    7.2 jenkins安装allure插件

    • 1
     
     
    
     
    

    项目名为
    创建文件夹
    从这是脚本产生的数据结果复制都当前项目空间下的文件夹

    allure-reslts则为

     
     
     
    

    参考文献

    https://yeasy.gitbook.io/docker_practice/introduction/what
    https://blog.csdn.net/itcast_cn/article/details/124865268
    https://blog.csdn.net/weixin_45847167/article/details/121242285
    https://www.bilibili.com/video/BV1ce4y1S7hm
    https://blog.csdn.net/aiwangtingyun/article/details/123523669
    https://www.bilibili.com/video/BV1og4y1q7M4

    • /bin/bash和/bin/sh的区别

       
    • 停止一个容器后使用使用新命令重新启动该容器,该容器之前的数据会消失吗

     
    

    就是挂载后的数据不会消失

    • 如何向一个正在运行的容器挂载本地文件
      可以先stop、rm该容器

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号