Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
下面继续给大家介绍一些Docker项目。有兴趣的小伙伴可以自己折腾一下(毕竟生命不息,折腾不止)。
搜索关注,分享更多有趣的知识。
Stirling-PDF
简介
Stirling-PDF 是一个本地托管的 Web 应用程序,允许个人对 PDF 文件执行各种操作,例如拆分和添加图像。目前 Stirling-PDF 还是 100% 基于 ChatGPT 制作的应用程序,随着更多功能的添加,才会慢慢地远离 ChatGPT。
GitHub:https://github.com/Stirling-Tools/Stirling-PDF
官网:https://stirlingpdf.io/?lang=zh_CN
软件特点
- 将 PDF 拆分为指定页码的多个文件,或将所有页面提取为单个文件;
- 将多个 PDF 合并为一个结果文件;
- 将 PDF 与图像相互转换;
- 将 PDF 页面重新组织成不同的顺序;
- 在指定位置将图像添加到 PDF;
- 以 90 度为基础旋转 PDF;
- 压缩 PDF 以减小文件大小;
软件截图
安装
使用Docker Run
1、下载
docker pull frooodle/s-pdf:latest
2、运行命令
docker run -d \-p 8380:8080 \-v /location/of/trainingData:/usr/share/tessdata \-v /location/of/extraConfigs:/configs \-v /location/of/logs:/logs \-e DOCKER_ENABLE_SECURITY=false \-e INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false \-e LANGS=en_GB \--name stirling-pdf \frooodle/s-pdf:latest
也可添加这个内容进行指定路径挂载,但不是必需的
-v /location/of/customFiles:/customFiles \
使用Docker compose
创建并编辑一个 docker-compose.yaml
文件
vim docker-compose.yaml
内容如下:
version: '3.3'
services:stirling-pdf:image: frooodle/s-pdf:latestports:- '8380:8080'volumes:- /location/of/trainingData:/usr/share/tessdata- /location/of/extraConfigs:/configs
# - /location/of/customFiles:/customFiles/
# - /location/of/logs:/logs/environment:- DOCKER_ENABLE_SECURITY=false- INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false
运行
docker compose up -d
打开浏览器,输入localhost:8380 (端口与前面安装一致)
这里面很多核心的office相关的,都是用的LibreOffice的功能,也就是说如果你不高兴这么烦,也可以安装个LibreOffice,效果应该也是一样。
工具毕竟是有限的,有些效果还是不可能很完美。
HivisionIDPhotos
简介
HivisionIDPhotos是一款开源的图片处理工具,可以利用AI模型对照片进行轻量级智能抠图、调整尺寸生成不同的标准证件照、替换背景、美颜、智能换正装等操作。有了它,自己在家也能轻松搞定证件照,不用非得去照相馆或者某宝找人弄了,而且在本地部署,无需担心个人信息泄露。
GitHub:https://github.com/Zeyi-Lin/HivisionIDPhotos
官网:https://swanhub.co/ZeYiLin/HivisionIDPhotos
安装
1. 拉取或构建镜像
以下方式三选一
方式一:拉取最新镜像:
docker pull linzeyi/hivision_idphotos
方式二:Dockrfile 直接构建镜像:
在确保将至少一个抠图模型权重文件放到hivision/creator/weights
下后,在项目根目录执行:
docker build -t linzeyi/hivision_idphotos .
方式三:Docker compose 构建:
在确保将至少一个抠图模型权重文件放到hivision/creator/weights
下后,在项目根目录下执行:
docker compose build
docker run -d -p 7860:7860 linzeyi/hivision_idphotos
2. 运行服务
启动 Gradio Demo 服务
运行下面的命令,在你的本地访问 http://127.0.0.1:7860 即可使用。
docker run -d -p 7860:7860 linzeyi/hivision_idphotos
启动 API 后端服务
docker run -d -p 8080:8080 linzeyi/hivision_idphotos python3 deploy_api.py
两个服务同时启动
docker compose up -d
启动完成后,我们可以在浏览器中输入:localhost:7860
接下来就可以在web页面中使用HivisionIDPhotos来制作证件照啦!
lmage-Matting
简介
lmage-Matting 是来自 GitHub 的一款免费、开源、无广告的,本地运行的基于AI的抠图应用。它简单好用,抠图效果好,目前支持Windows、MacOS 等平台。
它的主要功能有:
- AI抠图:自动识别图片主体进行抠图,支持批量抠图 需要更多算力),支持JPG、PNG、GIF、WEBP、BMP 等格式的图片。
- 证件照:AI抠图功能的延伸,抠图完成后可以选择主体的背景色,生成相当不错的证件照 支持各种尺寸。
- 图片格式转换:支持 PNG、JPEG、GIF、BMP、WEBP、ICO、ICNS、TIFF、PDF 等格式图片的互转。
GitHub:https://github.com/ihmily/image-matting
官方提供的效果图如下:
安装:
1.从源代码运行
首先,您需要下载项目代码并安装所需的依赖项。
# Python 3.10git clone https://github.com/ihmily/image-matting.git
cd image-matting
pip install -r requirements.txt
接下来,使用以下命令运行 Web 界面。
python app.py
2.Docker运行
拉取 Docker 镜像。
docker pull ihmily/image-matting:latest
拉取镜像后,运行容器。
docker run -p 8000:8000 ihmily/image-matting:latest
或者,您也可以自己构建映像。
docker build -t image-matting:latest .
docker run -p 8000:8000 image-matting:latest
3.API调用
请在使用 API 之前运行
文件上传
import requestsserver = "http://127.0.0.1:8000"
image_path = "image.png"
model_name = "universal" # people,universal
files = {"image": (image_path, open(image_path, "rb"))}
data = {"model": model_name}
response = requests.post(server+'/matting', files=files, data=data)
print(response.text)
json_data = response.json()
image_url = json_data['result_image_url']
mask_url = json_data['mask_image_url']
print("image_url:", server + image_url)
print("mask_url:", server + mask_url)
URL 上传
import requestsserver = "http://127.0.0.1:8000"
image_url = "http://your-image-url/demo.png"
data = {"image_url": image_url, "model": "universal"} # people,universal
response = requests.post(server+'/matting/url', json=data)
print(response.text)
json_data = response.json()
image_url = json_data['result_image_url']
mask_url = json_data['mask_image_url']
print("image_url:",server+image_url)
print("mask_url:",server+mask_url)
您可以从上面自由选择要上传的方法。如果要获得裁剪后的抠图,可以调用 function。crop_image_by_alpha_channel
好啦!以上就是我常用的比较实用小众但又好玩的容器啦,如果你需要的话,也可以跟着搭建看看,操作还是蛮简单的。