一、Docker
用来装应用的容器,也是一种集装箱的思想;
Docker的特点:集装箱、标准化:运输方式 存储方式 API接口、隔离
解决运行环境不一致问题,快速扩展和可伸缩
1、Docker的三个概念:镜像 仓库 容器
Docker思想就是:去仓库把镜像拉到本地,然后用命令把镜像运行起来变成容器
docker的分层文件系统就是镜像
仓库 hub.docker.com
2、Mac OS下载安装docker:
https://www.docker.com/products/docker#/mac
3、Dockerfile
Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。
docker build命令用于从Dockerfile构建映像。Dockerfile从上到下的顺序运行Dockerfile的指令,FROM用于指定基础镜像,另外还有RUN,CMD,FROM,EXPOSE,ENV等指令。(文章https://www.cnblogs.com/panwenbin-logs/p/8007348.html 中关于Dockerfile的指令讲解的详细)
FROM:指定基础镜像,必须为第一个命令
MAINTAINER: 维护者信息
RUN:构建镜像时执行,用于在镜像容器中执行命令
CMD:构建容器后调用,也就是在容器启动时才进行调用
ADD:将本地文件添加到容器中
ENV:设置环境变量
WORKDIR:工作目录,类似于cd命令
下图为一个简单的Dockerfile指令文件
4、docker常用命令
docker pull [OPTION] NAME[:TAG] 拉取镜像
docker images [OPTIONS] [REPOSITORY[:TAG]] 查看镜像
docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...] 运行镜像
docker ps 当前机器上正在运行的容器
docker run -d IMAGE 后台运行容器并且打印容器ID
docker build -t NAME:TAG 创建镜像
docker stop 停止运行镜像
docker restar ID 重启容器
二、Kubernetes (k8s)
基于容器技术的分布式架构方案,集群管理;
k8s的思想是:根据参数文件取部署应用,根据命令去对集群进行管理,其实就是高度封装以往复杂的运维
1、结构
master主服务器
node 用于部署应用容器的服务器
2、配置yaml文件
Deployment:定义pod的部署信息
Service:将哪些pod组合成一个service
若干个pod组成一个service,对外提供服务
副本:是指一个pod的多个实例
NameSpace:多租户的资源隔离,在测试环境中划分多套测试环境
3、k8s安装(很多需要翻墙下载):
三、持续集成
CI 是一种软件开发实践,每次集成都通过自动化的构建(编译、打包、部署、自动化测试)来验证
快速反馈和解决
jenkins是一种持续集成的工具
Registry :docker pull registry
我们完成这样一个事情:
Jenkins设置构建(参数化构建,代码库地址,maven构建命令)后,将jar包打包成docker镜像,并推送到registry镜像仓库中,应用的yaml文件拷贝到k8s的master上,让k8s根据配置启动应用。
Jenkins的更多配置:代码检查、单测、接口测试、邮件通知
网友评论