使用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
相关推荐
腾科IT教育7 分钟前
华为认证报考常见问题解析
运维·服务器·华为认证·hcia
_运维那些事儿9 分钟前
GitLabCI-CD入门
运维·ci/cd·容器·云计算·k8s·运维开发
杜子不疼.11 分钟前
【Linux】Ext系列文件系统(一):文件系统的初识
linux·运维·服务器
zhangzeyuaaa11 分钟前
SQL Server删除重复数据
运维·sqlserver
2401_8658548830 分钟前
轻量型服务器和云服务器的区别
运维·服务器
爱技术的小伙子30 分钟前
【 Docker 快速部署 MySQL 8.0(2026最新实践)—— 一键启动 + 数据持久化 + 常见优化】
mysql·adb·docker
hunter145034 分钟前
docker 在centos和ubuntu的安装
linux·docker·centos
wypywyp35 分钟前
6.linux环境优化——vscdoe ssh mobaxterm
linux·运维·ssh
腾科IT教育40 分钟前
HCIE-Datacom 认证的主要内容有哪些
运维·网络·华为认证·hcie·hcie考试·it考试
方便面不加香菜1 小时前
Linux基础开发工具--yum和vim
linux·运维·服务器