当前位置: 代码网 > it编程>前端脚本>Python > python项目打包成docker容器镜像的两种方法实现

python项目打包成docker容器镜像的两种方法实现

2025年11月30日 Python 我要评论
简单版:(一次成功,后续下载对应的软件依赖)方便运维、麻烦研发!现有项目如下:已经压缩成tar包,需要制作成容器镜像如何操作?第一步:肯定是构建dockerfile,如下:from py

简单版:(一次成功,后续下载对应的软件依赖)

方便运维、麻烦研发!

现有项目如下:

已经压缩成tar包,需要制作成容器镜像

如何操作?

第一步:肯定是构建dockerfile,如下:

from        python:3.12.4        ##基于什么版本的python,取决于你的环境,可以pip检测一下
label       maintainer="laohu"   ##命名标签 
run         mkdir -p /prediction_service_revised     ##创建容器内的工作目录
copy        miniconda3-latest-linux-x86_64.sh /prediction_service_revised    ##将自己构建所需要的工具复制到工作目录中
add         ./prediction_service_revised.tar.gz  /prediction_service_revised  #将python包导入到容器
workdir     /prediction_service_revised    ##定义工作目录
cmd         ["python"]                     ##命令使用

第二步,构建镜像

docker build -t prediction_service_revised:v1 .

等待构建,构建完成!

docker  images 

此方法,构建快,但是完全为基础镜像,任何python所需要的库都没有,需要研发自行下载!

可查看构建缓存(只有镜像占用的位置,这里我删除了,所以不显示!)

docker system df   
或者  docker system df   -v

复杂版:(构建多次,依赖包下载依赖于选择的库地址,构建缓存较大)

方便研发、麻烦运维!

依旧是之前的项目

第一步:在工作目录终端,使用pip  freeze  >  requirements.txt  命令将项目依赖库进行导出。

(生成需要的依赖库环境包)

命令执行完成后会生成一个叫requirements.txt的文件

pip   freeze    >  requirements.txt

这些依赖包并不能一次性下载完成,构建镜像时,若构建不成功,则会产生构建缓存占空间

第二步:构建dockerfile

from      python:3.12.4
label     maintainer="laohu'
run       apt-get update && apt-get install   -y   build-essential
run       mkdir -p /prediction_service_revised
copy      requirements.txt /prediction_service_revised
add       ./prediction_service_revised.tar.gz  /prediction_service_revised

workdir   /prediction_service_revised
run       pip install  --upgrade  pip -i https://mirrors.aliyun.com/pypi/simple/
run       pip install  -r  requirements.txt  -i https://mirrors.aliyun.com/pypi/simple/

cmd       ["python"]

第三步,构建镜像

docker build -t prediction_service_revised:v1 .

出现下列之类的问题,就是下载对应的pip依赖库失败,需要根据问题响应,依次解决依赖库问题,直至构建成功!

例:

构建成功:

构建缓存如下:

docker system df   
或者  docker system df   -v

那么问题来了,如何清理这些缓存?

# 删除未使用的构建缓存
docker builder prune
 
# 更彻底,删除所有缓存,包括可能还会用到的
docker builder prune --all

docker builder prune --all 清理构建缓存

docker container prune 清理没用的容器

docker image prune 清理悬空镜像

docker volume prune 清理没用的卷

docker network prune 清理没用的网络

docker system prune -a --volumes 一键清理

一键清理如果你只是做实验,对数据不敏感,可以直接:

docker system prune -a --volumes

这会删除所有:

已停止的容器

没有 tag 的镜像

没用的卷

没用的网络

构建缓存

空间释放得最快,但要注意数据卷和缓存一旦清理,就无法恢复。

更深入的检查有时候你清理完,空间还是很大,可以直接查看 /var/lib/docker 下哪些目录占用:

sudo du -h --max-depth=1 /var/lib/docker | sort -h

常见大户:

overlay2/:镜像和容器的文件系统

volumes/:卷的数据

buildkit/:构建缓存

如果 build kit 特别大,就说明问题出在构建缓存。

到此这篇关于python项目打包成docker容器镜像的两种方法实现的文章就介绍到这了,更多相关python打包成docker镜像内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com