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

 更新时间:2025年11月30日 11:34:20   作者:云隐智者  
本文介绍两种将Python项目打包为Docker镜像的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

方便运维、麻烦研发!

现有项目如下:

已经压缩成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镜像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python自动化办公之邮件发送全过程详解

    Python自动化办公之邮件发送全过程详解

    这篇文章主要介绍了Python自动化办公之邮件发送全过程详解,使用Python实现自动化邮件发送,可以让你摆脱繁琐的重复性业务,可以节省非常多的时,下面我们就来看看具体的操作配置吧
    2022-01-01
  • python 实现朴素贝叶斯算法的示例

    python 实现朴素贝叶斯算法的示例

    这篇文章主要介绍了python实现朴素贝叶斯算法的示例,帮助大家更好的理解和学习python 机器学习算法,感兴趣的朋友可以了解下
    2020-09-09
  • 详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)

    详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstac

    这篇文章主要介绍了详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等),具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • Python+Appium实现自动抢微信红包

    Python+Appium实现自动抢微信红包

    不知从何时开始微信红包横空出世,对于网速和手速慢的人只能在一旁观望,做为python的学习者就是要运用编程解决生活和工作上的事情。于是我用python解决我们的手速问题python实现自动抢微信红包,至于网速慢得那就只能自己花钱提升了。
    2021-05-05
  • Python图像滤波处理操作示例【基于ImageFilter类】

    Python图像滤波处理操作示例【基于ImageFilter类】

    这篇文章主要介绍了Python图像滤波处理操作,结合实例形式分析了Python基于ImageFilter类实现的滤波处理相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • PyCharm中Python解释器如何选择详析

    PyCharm中Python解释器如何选择详析

    这篇文章主要给大家介绍了关于PyCharm中Python解释器如何选择的相关资料,文中详细分析了四种常见的Python环境管理工具,分别是venv、conda、pipenv和poetry,需要的朋友可以参考下
    2024-11-11
  • 对pandas读取中文unicode的csv和添加行标题的方法详解

    对pandas读取中文unicode的csv和添加行标题的方法详解

    今天小编就为大家分享一篇对pandas读取中文unicode的csv和添加行标题的方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • python用opencv完成图像分割并进行目标物的提取

    python用opencv完成图像分割并进行目标物的提取

    这篇文章主要介绍了python用opencv完成图像分割并进行目标物的提取,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • 盘点Python 爬虫中的常见加密算法

    盘点Python 爬虫中的常见加密算法

    这篇文章主要介绍了盘点Python 爬虫中的常见加密算法,加密即Encryption指将明文数据变换为密文的过程,解密即Decryption指加密的逆过程,即由密文恢复出原明文的过程
    2022-07-07
  • pytorch visdom安装开启及使用方法

    pytorch visdom安装开启及使用方法

    这篇文章主要介绍了pytorch visdom安装开启及使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04

最新评论