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

Written by

in

文章目录
  • 方便运维、麻烦研发! 现有项目如下: 已经压缩成tar包,需要制作成容器镜像 如何操作?
  • 方便研发、麻烦运维! 依旧是之前的项目
  • # 删除未使用的构建缓存 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 一键清理
  • 目录
    • 简单版:(一次成功,后续下载对应的软件依赖)
      • 第一步:肯定是构建dockerfile,如下:
      • 第二步,构建镜像
      • 等待构建,构建完成!
      • 可查看构建缓存(只有镜像占用的位置,这里我删除了,所以不显示!)
    • 复杂版:(构建多次,依赖包下载依赖于选择的库地址,构建缓存较大)
      • 第一步:在工作目录终端,使用pip  freeze  >  requirements.txt  命令将项目依赖库进行导出。
      • 第二步:构建dockerfile
    • 那么问题来了,如何清理这些缓存?
      • 一键清理如果你只是做实验,对数据不敏感,可以直接:
      • 更深入的检查有时候你清理完,空间还是很大,可以直接查看 /var/lib/docker 下哪些目录占用:

    方便运维、麻烦研发!

    现有项目如下:

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

    如何操作?

    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

    方便研发、麻烦运维!

    依旧是之前的项目

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

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

    pip   freeze    >  requirements.txt

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

    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 的镜像

    没用的卷

    没用的网络

    构建缓存

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

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

    常见大户:

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

    volumes/:卷的数据

    buildkit/:构建缓存

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

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

    您可能感兴趣的文章:

    • docker打包一个包含python3的centos8的新镜像过程
    • python项目打包成docker镜像并运行的完整指南
    • 将Python项目打包成Docker镜像的全过程
    • 将Python Flask服务打包成Docker镜像并运行的完整指南
    • docker打包python镜像的全教程分享
    • 将本地Python项目打包成docker镜像上传到服务器并在docker中运行
    • python flask项目打包成docker镜像发布的过程

    站内搜索