OCR服务-本地打包docker+docker下载ssh调试

总问题

今天在将docling框架写好的OCR服务通过dockerfile的方式打包后进行部署,但是其中遇到了多个问题:

  1. 因为本地可能需要修改,需要去打包后的容器里面再去下载ssh和vim等,直接使用apt install是不能进行下载的
  2. 采用的dockerfile用的是python3.12-slim的基础镜像,在使用docling的OCR服务时会出现rapidocr_onnxruntime包下载了但是不能够使用

具体的操作请参考以下我的相关攥写文档

打包后操作

在打包好的docker中,通常是不允许直接使用apt来进行下载的,此时就需要通过以下方式来实现:

!!!此时会有一个很严重的问题,当容器重启后ssh服务不会自动启动,需要手动进入容器进行启动,这个对本地调试影响会很大,这点需要严重注意

复制代码
# 进入容器

# 更新源并安装
apt-get update
apt-get install -y openssh-server

# 安装 vim (可选,用于编辑配置)
apt-get install -y vim

# 设置 root 密码
passwd

# 安装完成后,编辑配置文件
vim /etc/ssh/sshd_config

# 将 #PermitRootLogin prohibit-password 改为 PermitRootLogin yes

# 创建运行目录
mkdir -p /var/run/sshd

# 启动 SSH 服务
service ssh start
# 或者
/usr/sbin/sshd

此处使用docling框架在Linux下面进行打包有一个很大的坑:

在docker的Linux下面在进行docling调用ocr服务去解析时,需要使用到libgl1和libglib2.0-0两个动态链接包

这个动态链接包是什么:

libGL.so.1**(OpenGL Library)**

  • 它的角色 :这是 OpenGL(开放图形库)的核心接口文件。
  • 它的功能:它的主要工作是指挥显卡(GPU)进行图像渲染、3D 建模绘制等。在桌面上,你玩游戏、看视频、用 Photoshop 都离不开它。

libglib2.0-0**(GLib Library)**

  • 它的角色 :这是 Linux 系统中最底层的 "瑞士军刀"库(General utility library)。
  • 它的功能 :它提供了数据结构(列表、树)、线程管理、事件循环等基础功能。它是图形界面库 GTK(类似于 Windows 的窗口管理器)的基石。

为什么Linux下的docker使用OCR服务要这两个动态链接包

首先这个docker采用的是python-3.12-slim是极简版的docker镜像,在维护时没有这种包,所以这个需要在dockerfile中执行相关的RUN命令进行安装。

A. "全家桶"的问题

标准的 opencv-python 包是为 "全功能" 设计的。它的开发者假设你可能会用到所有功能,包括:

  1. 读取图片(需要计算)
  2. 处理矩阵(需要计算)
  3. 显示图片( cv2.imshow**) ------ 关键点在这里!**

为了让你能运行 cv2.imshow() 弹出一个窗口看图片,OpenCV 在编译时就 硬链接(Hard Linked) 了桌面窗口系统(GTK/Qt)。

  • GTK 依赖 GLib (libglib2.0-0)。
  • 图像渲染 依赖 OpenGL (libGL.so.1)。
B. Linux 动态链接的"连坐"机制

当你在 Python 代码里写下 import cv2 (或 from rapidocr... 间接调用它) 时,Linux 的动态链接器(Dynamic Linker)开始工作:

  1. 它加载 cv2.so 文件。
  2. 它检查 cv2.so 依赖谁? -> 发现依赖 libGL.so.1
  3. 它去系统里找 libGL.so.1
  4. 如果找不到,链接器不仅会报错,还会直接拒绝加载整个 cv2****模块。

哪怕你这辈子都不会调用 cv2.imshow()****,哪怕你的代码全是后台纯计算,只要 import****这一步发生了,系统就必须核实所有依赖项都在场。

相关推荐
功德+n4 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
AI人工智能+4 小时前
基于高精度身份证OCR识别、炫彩活体检测及人脸比对技术的人脸核身系统,为通信行业数字化转型提供了坚实的安全底座
人工智能·计算机视觉·人脸识别·ocr·人脸核身
AI人工智能+5 小时前
一种以深度学习与计算机视觉技术为核心的表格识别系统,实现了结构化、半结构化表格的精准文字提取、布局解析与版面完整还原
深度学习·计算机视觉·ocr·表格识别
小敬爱吃饭5 小时前
Ragflow Docker部署及问题解决方案(界面为Welcome to nginx,ragflow上传文件失败,Docker中的ragflow-cpu-1一直重启)
人工智能·python·nginx·docker·语言模型·容器·数据挖掘
杨云龙UP5 小时前
从0到1快速学会Linux操作系统(基础),这一篇就够了!
linux·运维·服务器·学习·ubuntu·centos·ssh
木子欢儿5 小时前
Docker Hub 镜像发布指南
java·spring cloud·docker·容器·eureka
coppher6 小时前
Ubuntu 22.04 amd64 离线安装 Docker 完整教程
linux·docker
bloglin999999 小时前
docker logs 如何一直监听日志输出
运维·docker·容器
说实话起个名字真难啊9 小时前
Docker 入门之网络基础
网络·docker·php
❀͜͡傀儡师10 小时前
使用 Docker 部署 Neko 自托管虚拟浏览器(Firefox)
docker·容器·firefox