使用Docker进行模型部署

一、常见的模型部署场景

  1. 实时的、小数据量的预测应用
    部署方式:采用python-httpserve应用部署(如flask, fastApi, django),缺点是可能需要跨环境,从Java跨到Python环境
  2. 实时的、大数据量的预测应用
    部署方式:将训练好的模型转换成PMML,把模型封装成一个类,用Java调用这个类来预测
  3. 离线预测、D+1天的预测
    部署方式:可以简单的使用Python脚本进行预测,使用shell的crontab做定时调用

⭐️多个项目部署到一个服务器上的部署方式:使用Docker将项目封装在独立的容器中

补充:Linux配置

由于大部分服务器使用Linux做服务器,所以这里补充一下Linux虚拟机安装
Linux虚拟机安装(Ubuntu 20)

配置常见问题:

  1. 【解决】vmware虚拟机安装时提示 Intel VT-x 处于禁用状态:进入BIOS打开Intel Virtualization Technology
  2. 【解决】VMWare Workstation 17报错(2784):关闭虚拟机的3D加速功能
  3. 【解决】VMWare虚拟机安装Ubuntu时页面显示不全:VMware虚拟机安装Ubuntu时页面显示不全的解决方法

二、Docker

Docker是一种开源的容器化平台,可以简化应用程序的部署和管理过程。通过使用Docker,可以将应用程序及其所有依赖项封装在一个称为容器的独立单元中。

Docker部署的优点:

  1. 轻量和快速:Docker容器是轻量级的,因为它们与宿主机共享操作系统内核。这使得容器的启动和停止非常迅速,使您的应用程序能够快速部署和扩展。
  2. 可移植性:Docker容器提供了一个一致的运行时环境,无论在哪个主机上部署,容器内的应用程序和依赖项都将以相同的方式运行。这消除了由于不同主机之间的差异而导致的部署问题,使得应用程序在不同环境中更易于迁移和部署。
  3. 隔离性和安全性:Docker使用容器来隔离应用程序和其依赖项,确保它们在相互之间和宿主机上运行时相互独立。这种隔离性提供了更高的安全性,使得即使应用程序存在漏洞或问题,也不会对宿主机或其他容器造成影响。
  4. 简化的管理和部署:Docker提供了一套强大的工具和命令行界面,使得管理和部署应用程序变得简单。您可以使用Dockerfile来定义应用程序的构建过程,使得部署过程可重复和可自动化。此外,Docker还提供了监控、日志记录和扩展等功能,帮助您更好地管理和维护应用程序。

2.1 Docker 安装

Windows

官网下载Docker Desktop:Docker Desktop for Windows

测试是否安装成功:运行命令 docker run hello-world,显示"Hello from Docker!"则代表安装成功

Linux(ubuntu 20)

使用安装脚本安装docker

  1. 首先下载脚本
Shell 复制代码
$ curl -fsSL https://get.docker.com -o get-docker.sh
  1. 以root权限运行脚本
Shell 复制代码
sudo sh get-docker.sh
  1. 验证安装是否成功
Shell 复制代码
sudo docker run hello-world

2.2 Docker部署python项目(Windows)

建立容器

  1. 在python项目里新建一个名为Dockerfile的文件,填写创建容器的指令配置。例:
Dockerfile 复制代码
# 使用适当的基础镜像
FROM python:3.9

# 设置工作目录
WORKDIR /app

# 复制本地项目文件到容器中
COPY . /app

# 安装项目依赖库(如果有)
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple


# 设置入口命令
CMD ["python", "./main.py"]
  1. 在终端里cd到python项目的位置,运行docker命令创建容器。例:
Shell 复制代码
# 创建一个名为psql的容器
docker build -t psql .
  1. 在终端里使用docker命令运行项目。例:
Shell 复制代码
docker run -p 9999:9999 psql

进入容器运行项目

  1. 启动容器并进入容器的交互式终端。例:
Shell 复制代码
docker run -it psql bash
  1. 运行项目
Shell 复制代码
python main.py

2.3 将容器打包部署到其他设备或服务器上

  1. 查询本地仓库的所有镜像
Shell 复制代码
docker images
  1. 导出容器。例:
Shell 复制代码
docker save <容器id> > <保存容器的路径>\<容器文件名称>.tar
  1. 将容器文件导入到其他设备或服务器的docker里(这里演示在ubuntu里加载容器)

cd到容器文件的文件夹里,打开终端,输入命令

Shell 复制代码
sudo docker load --input <容器文件名称>.tar
  1. 打开终端,验证容器是否成功导入
  • 查询本地仓库所有镜像
Shell 复制代码
sudo docker images
  • 如果看到加载的镜像没有tag和镜像名,则手动打tag:
Shell 复制代码
docker tag {image_id} {image_name}:{image_tag}
  • 进入镜像
Shell 复制代码
sudo docker run -it <image_name> bash
  • 运行项目
Shell 复制代码
python main.py
相关推荐
Peter·Pan爱编程43 分钟前
Docker在Linux中安装与使用教程
linux·docker·eureka
MUY09902 小时前
应用控制技术、内容审计技术、AAA服务器技术
运维·服务器
楠奕2 小时前
elasticsearch8.12.0安装分词
运维·jenkins
Sadsvit2 小时前
源码编译安装LAMP架构并部署WordPress(CentOS 7)
linux·运维·服务器·架构·centos
java资料站3 小时前
Jenkins
运维·jenkins
苦学编程的谢3 小时前
Linux
linux·运维·服务器
G_H_S_3_3 小时前
【网络运维】Linux 文本处理利器:sed 命令
linux·运维·网络·操作文本
拾心214 小时前
【运维进阶】Linux 正则表达式
linux·运维·正则表达式
__lll_4 小时前
Docker 从入门到实战:容器、镜像与 Compose 全攻略
前端·docker
xcs194054 小时前
AI 自动化编程 trae 体验 页面添加富编辑器
运维·自动化·编辑器