DevOps

DevOps

本章知识点

三 Dokcer

3.1 公司部门


人事部:HR 招聘网站发布招聘信息、你投递简历、她就会联系你预约面试。当你面试成功、发送offer。
          当你进公司,给你签定劳务合同,保密合同。后期管理的你的考勤。当你离职等事情
          薪酬绩效。  人员规划。

财务部:发工资、报销

行政部:采购、保修

技术部:美工、前端、移动端、后台、数据库、测试、运维、产品经理、项目经理.

项目开始阶段 产品经理和项目经理提供方案,市场调研。
开会商讨可行性,分工。制定周期【敏捷开发】,分工(风险控制)。

美工设计原型图。需求分析之后开始数据库设计。
多方开始动工---接口文档,多方联调---交付测试。
    

3.2 持续集成

持续集成(Continuous Integration,CI):
    代码合并、构建、部署、测试都在一起,不断地执行这个过程,并对结果反馈。
持续部署(Continuous Deployment,CD):部署到测试环境、预生产环境、生产环境。
持续交付(Continuous Delivery,CD):将最终产品发布到生产环境,给用户使用。
    
高效的CI/CD环境可以获得:
• 及时发现问题    • 大幅度减少故障率     • 加快迭代速度    • 减少时间成本
    
面试:CI/CD是如何做的?  代码开发到部署的全过程

3.3 DevOps

DevOpsDevelopmentOperations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运维工作必须紧密合作。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PSzeFciL-1666265856783)(DevOps.assets/1666251680514.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fUle8ZiE-1666265856785)(DevOps.assets/1666252052772.png)]

3.4 DevOps交付流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NdUo2yFy-1666265856785)(DevOps.assets/1666252183685.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZvmCeZkc-1666265856785)(DevOps.assets/1666252760804.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tKfd3t9F-1666265856786)(DevOps.assets/1666252846664.png)]

3.5 虚拟机和容器

我们开发环境和生产环境需要一直 ,但是有可能出现冲突,并且如果要部署多个环境 软件之间也会有版本不匹配的问题!
    
例如 我们开发了两个项目 其中一个使用的是 JDK8  另一个使用的是JDK11版本 此时都要部署到同一台服务器中    
JDK安装完成之后需要配置环境变量,此时我们一台电脑配置两个JDK的环境变量肯定会出冲突

①虚拟机:虚拟化硬件

虚拟机 Virtual Machine 指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。

在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。

每个虚拟机都有独立的 CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。在容器技术之前,业界的网红是虚拟机。

虚拟机技术的代表,是 VMWareOpenStack。

②容器:将操作系统层虚拟化,是一个标准的软件单元

其特点如下:

  随处运行:容器可以将代码与配置文件和相关依赖库进行打包,从而确保在任何环境下的运行都是一致的。

  高资源利用率:容器提供进程级的隔离,因此可以更加精细地设置 CPU 和内存的使用率,进而更好地利用服务器的计算资源。

  快速扩展:每个容器都可作为单独的进程予以运行,并且可以共享底层操作系统的系统资源,这样一来可以加快容器的启动和停止效率。

区别与联系:

  虚拟机虽然可以隔离出很多「子电脑」,但占用空间更大,启动更慢。虚拟机软件可能还要花钱,例如 VMWare。

  容器技术不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境,类似「沙箱」。

运行空间,虚拟机一般要几 GB 到 几十 GB 的空间,而容器只需要 MB 级甚至 KB 级

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yoCj5hNK-1666265856786)(DevOps.assets/1666254622139.png)]

3.6 Docker简介

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iHiisbMM-1666265856787)(DevOps.assets/1666254710700.png)]

docker 看logo就知道是 一个鲸鱼上面放着很多 集装箱。docker容器技术很重要的一个观点就是集装箱思想

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zyx8yFFE-1666265856787)(DevOps.assets/1666255043231.png)]

3.7 docker核心概念

1)image镜像  docker镜像就是一个只读模板,比如,一个镜像可以包含一个完整的centos,里面仅安装apache或用户的其他应用,镜像可以用来创建docker容器,另外docker提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下一个已经做好的镜像来直接使用 (我们需要打包好的东西   制作成的副本 就是 镜像)

2)container容器  docker利用容器来运行应用,容器是从镜像创建的运行实例,它可以被启动,开始、停止、删除、每个容器都是互相隔离的,保证安全的平台,可以吧容器看做是要给简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行再其中的应用程序  ( 镜像拿过来之后  要运行的空间就是容器)

3)repostory仓库  仓库是集中存储镜像文件的仓库,registry是仓库主从服务器,实际上参考注册服务器上存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)

仓库分为两种,公有参考,和私有仓库,最大的公开仓库是docker Hub,存放了数量庞大的镜像供用户下周,国内的docker pool,这里仓库的概念与Git类似,registry可以理解为github这样的托管服务。

(A电脑制作好的镜像(image)  发布到 仓库(repostory)中   B电脑再去仓库中将这个镜像进行拉取,然后运行到自己电脑的容器(container)中)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T3ohlZZU-1666265856789)(DevOps.assets/1666255340440.png)]

3.8 docker安装

Docker 要求 CentOS/Ubuntu 系统的内核版本高于 3.10 
查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker,通过 uname -r 命令查看你当前的内核版本
检查内核: uname -r 

安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。Device mapper(内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构)存储驱动需要device-mapper-persistent-data 和 lvm2(Logical Volume Manager)逻辑卷管理,它是对此盘分区进行管理的一种机制,建立在硬盘和分区之上的一个逻辑层,用来提高磁盘管理的灵活性:

yum install -y    yum-utils   device-mapper-persistent-data     lvm2

设置阿里镜像仓库,提高下载速度:yum-config-manager  --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


查看所有docker版本: yum list docker-ce --showduplicates | sort -r
安装docker:yum  -y   install docker-ce    
查看docker状态 : service  docker  status
启动docker:service docker  start

3.9 docker的Hello World

拉取helloworld : docker run  hello-world
    
此时会连接超时:docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: TLS handshake timeout.
See 'docker run --help'.
    
    
修改文件vim /etc/docker/daemon.json ( 如果文件不存在,你可以直接创建它 ) :
{
    "registry-mirrors": [
       "https://to18y8uc.mirror.aliyuncs.com", "https://registry.docker-cn.com","http://hub-mirror.c.163.com"    ]
}

重启docker : service  docker  restart
运行hello world :  docker  run  hello-world

Docker原理:
To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.   Docker客户端联系了Docker守护进程
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)Docker守护进程从Docker Hub中提取“hello world”镜像
 3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
     
Docker守护进程从该镜像创建了一个新容器,该容器运行生成当前正在读取的输出的可执行文件。
     
 4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
     
Docker守护进程将输出流传输到Docker客户机,后者将其发送到终端


我们拉取的hello-world案例 其实就是告诉我们docker是如何拉取

3.10 docker常用命令


  查看帮助:docker --help
  查看docker版本:docker  version
  查看docker信息:  docker  info
  查看docker镜像:  docker  images
  查询镜像: docker  search  nginx
  拉取镜像: docker  pull  tomcat:8.0
  
   以前我们运行tomcat 需要 安装jdk 配置环境变量 下载tomcat 解压 配置环境变量 写shell脚本  
   我们使用docker之后 此时只需要pull 下载, 启动 关闭 打开也是直接使用docker自带
  也就是说 无论什么软件 下载 启动都是这些命令
      
      
  运行容器:docker  run  --name 任意名称  -d  镜像名称:版本
  docker run --name hahaha   -d    -p 8083:8080    tomcat:8.0  
  -d 守护进程  -p 外部访问端口映射
  192.168.239.120:8083  
      
  查看容器运行情况: docker   ps  -a
  查看日志: docker  logs   hahaha
  停止容器: docker  stop   名字/版本
  再次启动: docker  start  名字/版本
  删除容器: docker  rm     名字/版本
  删除镜像: docker  rmi    -f        tomcat:8.0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FPICMIQt-1666265856790)(DevOps.assets/1666258689724.png)]



3.11 自定义镜像

1 将我们的项目打包
我们是springboot项目 可以运行到tomcat中 需要添加maven的依赖和插件  这个方案一般 
我们都是直接运行 springboot项目打好的jar包。也就是说 我们的服务器 不需要安装tomcat
首先我们先找到自己的项目  添加一个maven的插件
 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
  </build>


选择maven的快捷工具 点击package 打包

springbootdemo01-1.0-SNAPSHOT.jar

java  -jar  springbootdemo01-1.0-SNAPSHOT.jar

2 创建一个文件夹 用来打包镜像
mkdir  /home/myimage
cd   /home/myimage
使用xftp将这个项目springbootdemo01-1.0-SNAPSHOT.jar上传到我们linux电脑中

3 在当前文件夹中 创建一个 dockerfile文件 配置打包镜像的信息
vim   dockerfile

FROM       java:8
VOLUME     /tmp
ADD         boot.jar   haha.jar
RUN         sh   -c  'touch   /haha.jar'
ENV         JAVA_OPTS=""
ENTRYPOINT  [ "sh" ,  "-c"  , "java  $JAVA_OPTS  -jar  /haha.jar" ]

4 构建镜像
启动docker:  service  docker  start
构建镜像 :   docker  build  -t  xxx  . 
查看镜像:    docker  images
运行镜像:    docker  run --name mvc -d -p 8877:8888  xxx:latest


5 打开百度 搜索 阿里云  搜索镜像 管理平台  镜像仓库  创建镜像仓库   填写信息   本地仓库  管理  
  访问凭证  设定固定密码


 docker login --username=loveeccc registry.cn-hangzhou.aliyuncs.com
 
 docker  images 
[root@docker120 myimage]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED          SIZE
xxxxx         latest    421f331a4875   13 minutes ago   761MB
hello-world   latest    bf756fb1ae65   11 months ago    13.3kB
java          8         d23bdf5b1b1b   3 years ago      643MB

docker tag c038ace3189a registry.cn-hangzhou.aliyuncs.com/qy134/zq34:1.0
docker tag 251655318215 registry.cn-hangzhou.aliyuncs.com/qy134/haha:1.0
docker push registry.cn-hangzhou.aliyuncs.com/qy134/zq34:1.0
docker push registry.cn-hangzhou.aliyuncs.com/qy134/haha:1.0
6 拉取远程仓库的内容

docker pull registry.cn-hangzhou.aliyuncs.com/qy134/zq34:1.0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QAHB4G6H-1666265856791)(DevOps.assets/1666259809000.png)]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值