type
status
date
slug
summary
tags
category
icon
password
AI summary
|
notion image
|

1.1 环境不一致

我本地运行没问题啊:由于环境不一致,导致相同的程序,运行结果却不一致。

1.2 隔离性

哪个哥们又写死循环了,怎么这么卡:在多用户的操作系统下,会因为其他用户的操作失误影响到你自己编些的程序。

1.3 弹性伸缩

淘宝在双11的时候,用户量暴增:需要很多很多的运维人员去增加部署的服务器,运维成本过高的问题。

1.4 学习成本

学习一门技术,得先安装啊:学习每一门技术都要先安装响应的软件,但是还有他所依赖的各种环境,安装软件成本快高过学习成本啦。

二、Docker介绍


2.1 Docker的由来

一帮年轻人创业,创办了一家公司,2010年的专门做PAAS平台。但是到了2013年的时候,像亚马逊,微软,Google都开始做PAAS平台。到了2013年,公司资金链断裂,不得不倒闭,于是将公司内的核心技术对外开源,核心技术就是Docker。由于开源了Docker,到了2014年的时候,得到了C轮的融资 4000W,2015年的时候,得到了D轮的融资.9500W。于是公司开始全神贯注的维护Docker。
Docker主要作者-所罗门

notion image

Docker的作者已经离开了维护Docker的团队

notion image

2.2 Docker的思想

集装箱:会将所有需要的内容放到不同的集装箱中,谁需要这些环境就直接拿到这个集装箱就可以了。标准化:运输的标准化:Docker有一个码头,所有上传的集装箱都放在了这个码头上,当谁需要某一个环境,就直接指派大海疼去搬运这个集装箱就可以了。命令的标准化:Docker提供了一些列的命令,帮助我们去获取集装箱等等操作。提供了REST的API:衍生出了很多的图形化界面,Rancher。隔离性:Docker在运行集装箱内的内容时,会在Linux的内核中,单独的开辟一片空间,这片空间不会影响到其他程序。中央仓库|注册中心:超级码头,上面放的就是集装箱镜像:就是集装箱容器:运行起来的镜像

三、Docker的安装


3.1 下载Docker依赖的环境

想安装Docker,需要先将依赖的环境全部下载,就像Maven依赖JDK一样

3.2 指定Docker镜像源

默认下载Docker回去国外服务器下载,速度较慢,我们可以设置为阿里云镜像源,速度更快

3.3 安装Docker

依然采用yum的方式安装

3.4 启动Docker并测试

安装成功后,需要手动启动,设置为开机自启,并测试一下Docker

四、Docker的中央仓库【重点


Docker官方的中央仓库:这个仓库是镜像最全的,但是下载速度较慢。https://hub.docker.com/国内的镜像网站:网易蜂巢,daoCloud等,下载速度快,但是镜像相对不全。https://c.163yun.com/hub#/homehttp://hub.daocloud.io/ (推荐使用)在公司内部会采用私服的方式拉取镜像,需要添加配置,如下……

五、镜像的操作【重点


5.1 拉取镜像

从中央仓库拉取镜像到本地

5.2 查看本地全部镜像

查看本地已经安装过的镜像信息,包含标识,名称,版本,更新时间,大小

5.3 删除本地镜像

镜像会占用磁盘空间,可以直接手动删除,表示通过查看获取

5.4 镜像的导入导出

如果因为网络原因可以通过硬盘的方式传输镜像,虽然不规范,但是有效,但是这种方式导出的镜像名称和版本都是null,需要手动修改

六、容器操作【重点


6.1 运行容器

运行容器需要制定具体镜像,如果镜像不存在,会直接下载

6.2 查看正在运行的容器

查看全部正在运行的容器信息

6.3 查看容器日志

查看容器日志,以查看容器运行的信息

6.4 进入容器内容部

可以进入容器内部进行操作

6.5 复制内容到容器

将宿主机的文件复制到容器内部的指定目录

6.6 重启&启动&停止&删除容器

容器的启动,停止,删除等操作,后续经常会使用到

七、Docker应用


7.1 Docker安装Tomcat

运行Tomcat容器,为部署SSM工程做准备

7.2 Docker安装MySQL

运行MySQL容器,为部署SSM工程做准备

7.3 部署SSM工程

修改SSM工程环境,设置为Linux中Docker容器的信息通过Maven的package重新打成war包讲Windows下的war包复制到Linux中通过docker命令将宿主机的war包复制到容器内部测试访问SSM工程

八、数据卷【重点


为了部署SSM的工程,需要使用到cp的命令将宿主机内的ssm.war文件复制到容器内部。
数据卷:将宿主机的一个目录映射到容器的一个目录中。
可以在宿主机中操作目录中的内容,那么容器内部映射的文件,也会跟着一起改变。

8.1 创建数据卷

创建数据卷之后,默认会存放在一个目录下 /var/lib/docker/volumes/数据卷名称/_data

8.2 查看数据卷详情

查看数据卷的详细信息,可以查询到存放路径,创建时间等等

8.3 查看全部数据卷

查看全部数据卷信息

8.4 删除数据卷

删除指定数据卷

8.5 容器映射数据卷

映射有两种方式:
  • 通过数据卷名称映射,如果数据卷不存在。Docker会帮你自动创建,会将容器内部自带的文件,存储在默认的存放路径中。
  • 通过路径映射数据卷,直接指定一个路径作为数据卷的存放位置。但是这个路径下是空的。

九、Dockerfile自定义镜像【重点


我们可以从中央仓库下载一个镜像,也可以自己手动去制作一个镜像,需要通过Dockerfile去指定自定义镜像的信息

9.1 Dockerfile

创建自定义镜像就需要创建一个Dockerfile,如下为Dockerfile的语言

9.2 通过Dockerfile制作镜像

编写完Dockerfile后需要通过命令将其制作为镜像,并且要在Dockerfile的当前目录下,之后即可在镜像中查看到指定的镜像信息,注意最后的 .

十. Docker-Compose【重点


之前运行一个镜像,需要添加大量的参数,可以通过Docker-Compose编写这些参数。而且Docker-Compose可以帮助我们批量的管理容器。这些信息只需要通过一个docker-compose.yml文件去维护即可。

10.1 下载并安装Docker-Compose

10.1.1 下载Docker-Compose

去github官网搜索docker-compose,下载1.24.1版本的Docker-Compose

10.1.2 设置权限

需要将DockerCompose文件的名称修改一下,给予DockerCompose文件一个可执行的权限

10.1.3 配置环境变量

方便后期操作,配置一个环境变量
将docker-compose文件移动到了/usr/local/bin , 修改了/etc/profile文件,给/usr/local/bin配置到了PATH中

10.1.4 测试

在任意目录下输入docker-compose
测试效果

notion image

10.2 Docker-Compose管理MySQL和Tomcat容器

yml文件以key: value方式来指定配置信息
多个配置信息以换行+缩进的方式来区分
在docker-compose.yml文件中,不要使用制表符

10.3 使用docker-compose命令管理容器

在使用docker-compose的命令时 ,默认会在当前目录下找docker-compose.yml文件

10.4 docker-compose配合Dockerfile使用

使用docker-compose.yml文件以及Dockerfile文件在生成自定义镜像的同时启动当前镜像,并且由docker-compose去管理容器

10.4.1 docker-compose文件

编写docker-compose.yml文件

10.4.2 Dockerfile文件

编写Dockerfile文件

10.4.3 运行

测试效果

十一. Docker CI、CD


11.1 CI、CD引言

项目部署
  • 将项目通过maven进行编译打包
  • 将文件上传到指定的服务器中
  • 将war包放到tomcat的目录中
  • 通过Dockerfile将Tomcat和war包转成一个镜像,由DockerCompose去运行容器
项目更新后,需要将上述流程再次的从头到尾的执行一次,如果每次更新一次都执行一次上述操作,很费时,费力。我们就可以通过CI、CD帮助我们实现持续集成,持续交付和部署。

11.2 CI介绍

CI(continuous intergration)持续集成
持续集成:编写代码时,完成了一个功能后,立即提交代码到Git仓库中,将项目重新的构建并且测试。
  • 快速发现错误。
  • 防止代码偏离主分支。

11.3 搭建Gitlab服务器

实现CI,需要使用到Gitlab远程仓库,先通过Docker搭建Gitlab

11.3.1 准备工作

创建一个全新的虚拟机,并且至少指定4G的运行内存,4G运行内存是Gitlab推荐的内存大小。并且安装Docker以及Docker-Compose

11.3.2 修改ssh的22端口

将ssh的默认22端口,修改为60022端口,因为Gitlab需要占用22端口

11.3.3 编写docker-compose.yml

docker-compose.yml文件去安装gitlab(下载和运行的时间比较长的)

11.4 搭建GitlabRunner

查看资料中的gitlab-runner文件即可安装

11.5 整合项目入门测试

11.5.1 创建项目

创建maven工程,添加web.xml文件,编写html页面

11.5.2 编写.gitlab-ci.yml

编写.gitlab-ci.yml文件

11.5.3 将maven工程推送到gitlab中

执行git命令推送到Gitlab

11.5.4 查看效果

可以在gitlab中查看到gitlab-ci.yml编写的内容
效果图

notion image

11.6 完善项目配置

添加Dockerfile以及docker-compose.yml, 并修改.gitlab-ci.yml文件

11.6.1 创建Dockerfile

11.6.2 创建docker-compose.yml

11.6.3 修改.gitlab-ci.yml

11.6.4 测试

测试效果

notion image

11.7 CD介绍

CD(持续交付,持续部署)
持续交付:将代码交付给专业的测试团队去测试
持续部署:可以直接将指定好tag的代码直接部署到生产环境中
CICD图

notion image

11.8 安装Jenkins

11.8.1 编写docker-compose.yml

官网:https://www.jenkins.io/

11.8.2 运行并访问Jenkins

第一次运行时,会因为data目录没有权限,导致启动失败
访问http://192.168.199.109:8888
访问成功后,需要输入密码,可在日志中查看
notion image
手动指定插件安装:指定下面两个插件即可
publish ssh.
git param.
notion image
安装成功后,需要指定上用户名和密码,登陆成功
notion image

11.9 配置Jenkins的目标服务器

执行过程为代码提交到Gitlab,Jenkins会从Gitlab中拉取代码,并在Jenkins中打包并发布到目标服务器中。

11.9.1 点击左侧的系统设置

左侧导航

notion image

11.9.2 选中中间区域的系统设置

系统设置

notion image

11.9.3 搜索Publish over SSH

Publish over SSH

notion image

11.9.4 点击上图新增

新增SSH连接

notion image

11.10 配置GitLab免密码登录

链接Gitlab需要使用密码,我们可以通过SSH的方式,免密码登陆Gitlab拉取代码,避免每次都输入密码。

11.10.1登录Jenkins容器内部

11.10.2 输入生成SSH秘钥命令

11.10.3将秘钥复制到GitLab的SSH中

配置密钥

notion image

11.11 配置JDK和Maven

我们需要再Jenkins中将代码打包,需要依赖JDK和Maven的环境

11.11.1 复制软件到data目录下

效果

notion image

11.11.2 在监控界面中配置JDK和Maven

配置环境变量

notion image

11.11.3 手动拉取gitlab项目

使用SSH无密码连接时,第一次连接需要手动确定
手动拉取一次

notion image

11.12 创建maven任务

实现通过Jenkins的Maven任务,自动去Gitlab拉取代码,并在本地打包,发布到目标服务器上

11.12.1 创建maven工程,推送到GitLab中

随便创建一个即可……

11.12.2 Jenkins的监控页面中创建maven任务

指定GitLab地址

notion image

指定maven打包方式

notion image

11.12.3 执行maven任务

立即构建,并查看日志

notion image

控制台查看日志信息

notion image

11.12.4 最终效果

打包成功

notion image

11.13 实现持续交付持续部署

实现根据tag标签,实现持续交付和持续部署

11.13.1 安装Persistent Parameter的插件

安装插件

notion image

11.13.2 重新指定构建项目的方式

根据标签构建项目

notion image

自定义构建

notion image

11.13.3 构建项目成功后,需要将内容发布到目标服务器

发布服务器后执行的命令

notion image

11.13.4 添加程序代码

11.13.5 测试

根据标签修改发布版本

notion image

flyway数据库脚本git使用教程