使用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
相关推荐
小袁搬码15 分钟前
Windows中指定路径安装DockerDesktop
windows·docker·容器·docker desktop
吃肉不能购27 分钟前
Label-studio-ml-backend 和YOLOV8 YOLO11自动化标注,目标检测,实例分割,图像分类,关键点估计,视频跟踪
运维·yolo·自动化
学Linux的语莫31 分钟前
Ansible使用简介和基础使用
linux·运维·服务器·nginx·云计算·ansible
qq_3129201140 分钟前
docker 部署 kvm 图形化管理工具 WebVirtMgr
运维·docker·容器
踏雪Vernon41 分钟前
[OpenHarmony5.0][Docker][环境]OpenHarmony5.0 Docker编译环境镜像下载以及使用方式
linux·docker·容器·harmonyos
学Linux的语莫1 小时前
搭建服务器VPN,Linux客户端连接WireGuard,Windows客户端连接WireGuard
linux·运维·服务器
黑牛先生1 小时前
【Linux】进程-PCB
linux·运维·服务器
Karoku0661 小时前
【企业级分布式系统】ELK优化
运维·服务器·数据库·elk·elasticsearch
条纹布鲁斯2 小时前
dockerdsktop修改安装路径/k8s部署wordpress和ubuntu
docker·kubernetes
安迁岚2 小时前
【SQL Server】华中农业大学空间数据库实验报告 实验三 数据操作
运维·服务器·数据库·sql·mysql