基本概念
1.docker
应用容器引擎,用于运行容器
image:可执行程序
container:运行起来的进程
dockerfile:image的源代码, 是一个用**来构建镜像的文本文件,**文本内容包含了一条条构建镜像所需的指令和说明
部署流程
-
上传项目文件到服务器
-
进去项目文件夹 使用 Dockerfile 创建镜像
docker build -t server:v1
-
运行容器之前先停止老版本
docker stop server-container:v0
-
基于镜像运行容器
docker run -d name server-container:v1 server:v1
-
暂停一个容器
docker pause haicoder
-
删除之前版本的容器
docker rmi server:v0
-
若有问题恢复之前版本
docker stop server-container:v1
docker run -d --name server-container:v0 server:v0
基于dockerfile创建实例
- 创建一个
Dockerfile
- 创建一个文件夹
mkdir TestDockerfile
- 进入文件夹
cd TestDockerfile
- 创建一个文件
touch Dockerfile
- 写入
echo "hello world" > index.html
创建一个测试文件 - 在相应的目录下
docker build -t = “beyond/test:v1”
镜像名为beyond/test,标签为v1
Dockerfile文件
FROM ubuntu:16.04
基于哪个镜像进行构建
MAINTAINER beyond ubuntu ”111@qq.com"
ADD ./index.html /var/www/html/index.html
把和Dockerfile文件在同一个目录里面的文件添加到要构建的镜像
WORKDIR /var/www/html
设置工作目录
run和cmd的区别:run在构建镜像时运行,cmd在容器启动时运行,每次启动都执行一次
常用命令
-
docker build
:构建镜像。 -
- 常用格式:
docker build -t 镜像名 Dockerfile所在路径
。 - 示例:
dcoker build -t image-name .
。
- 常用格式:
-
docker run
:基于镜像启动容器。 -
- 常用格式:
docker run -id -t --name 容器名 镜像名/镜像ID
。 - 示例:
docker run -id -t --name container-name image-name
。
- 常用格式:
-
docker ps
:显示所有容器信息。 -
docker images
:显示所有镜像信息。 -
docker stop
:停止容器运行。 -
docker start
:重新运行一个已停止的容器。 -
docker rm
:删除容器,删除之前要先确保容器已经停止运行。可以指定多个容器。 -
- 示例:
docker rm container-name
。
- 示例:
-
docker rmi
:删除镜像,删除之前要确保没有基于该镜像的容器存在。可以指定多个镜像。 -
- 示例:
docker rmi image-name/image-id
- 示例:
-
docker exec
:在容器中执行命令。 -
- 示例:
docker exec -it container-name /bin/bash
。这命令可以启动容器内的bash
,其中-i
表示以交互的方式运行命令,-t
表示在终端(tty)中运行。
- 示例:
2.一些概念
集群
服务器集群,使多台服务器能够像一台服务器那样工作或者是看起来好像一台机器,提高数据处理能力以及服务能力。
负载均衡
把工作分到多个服务器,防止哪个服务器宕机其他服务器能提供相同内容。
负载均衡器:选择能正常做出响应的后端服务器。
分布式
分散的物理和逻辑资源通过计算机网络实现信息的交换。
例:计算1+2+…+100 一台电脑处理1+2+3…+50,另一台处理51+52…+100,再进行汇总
区别
集群是将几台服务器集合到一起,来实现同一业务,分布式是处理不同任务。
Elyra
- 一个AI项目:数据预处理— 特征抽取— 训练— 模型评估— 部署
- 提供一个pipeline可视化编辑器,将多个Notebook转换为批处理或工作流
kubernetes(k8s)
一个容器集群的管理系统
快速部署应用
快速扩展应用
无缝对接新的应用功能
节省资源,优化硬件资源的使用
Kubeflow
kubernetes的机器学习工具包
kubeflow的组建: Pipeline
Pipeline:(Pipelines是一个基于Argo
实现了面向机器学习场景的流水线项目,提供机器学习流程的创建、编排调度和管理,提供了一个Web UI
)提供一个ui来定义机器学习的过程,整个过程运行在k8s集群上。
pipeline是一个机器学习工作流的抽象概念,可以是一个函数过程,也可以是数据加载,变换,清洗等环节。
在pipelines构建各流程组件前,需要将对应流程的业务代码打包成docker镜像文件(因为kubeflow中运行的代码均以容器方式实现)
构建pipeline的步骤
安装专门的sdk:打包Docker镜像,镜像是组件的依赖,每一个组件运行就是一个容器。
python定义好pipeline:python函数描述组件的输入输出信息,有几个节点输入有几个节点输出。
sdk构建pipeline的包,通过ui上传
k8s命令和kubeflow平台
查看版本kubectl version
查看命名空间 kubectl get ns
查看命名空间下的资源 kubectl get pods --namespece (名字)
运行pipeline需新建experiment,即将同一类的pipeline 运行放在同一个experiment中(KFP)
运行一个pipelines:上传yaml文件或者通过url上传