AberSheeran
Aber Sheeran

Python Docker IMAGE 的挑选

起笔自
所属文集: Docker学习笔记
共计 1132 个字符
落笔于

Python Docker 镜像,可以分为四种类型(以 3.7 版本镜像为例)——python:3.7-alpinepython:3.7-slimpython:3.7-busterpython:3.7。目前,Debian latest stable 版本就是 buster,故而在我写下这篇文章时 python:3.7-busterpython:3.7 等价。

类型 系统 系统包管理工具
alpine Alpine apk
slim Debian buster-slim apt/apt-get
buster Debian buster apt/apt-get
default Debian latest stable apt/apt-get

default

此类镜像使用最新的 Debian 稳定版作为系统,包含了所有 CPython 所需要的依赖。当你是一个新手或者不想浪费时间时,使用此镜像最佳。

-buster

此类镜像使用 Debian buster 作为系统,包含了所有 CPython 所需要的依赖。当你需要指定使用 Debian buster 而不是未来可能会变化的 Debian letest stable 时,可以使用它。

-slim

此镜像是默认镜像的瘦身版,它与默认镜像拥有一样的系统和包管理工具,但省略许多不常用的依赖,故而它变得很小。但这意味着当你需要一些不常用的依赖时,需要自己安装。

-alpine

alpine 包含了在 Linux 上运行 Python 所需要的最小环境,它使用 Alpine 作为系统。因为它最小,所以只能直接运行纯 Python 代码。任何需要编译 C 代码或动态链接库的 Python 仓库都不能直接使用,需要你自己安装依赖。故而此镜像需要更多的时间去调配系统依赖,并且如果你不懂如何在使用后删除那些可删除的系统依赖,使用它构建的最终镜像依旧不会很小。

如何挑选

由于同一台机器上的 Docker Image 是可以共享的。所以当你有许多 Python 项目需要跑在同一台机器上时,不要犹豫,defaultbuster 是你最佳的选择。使用它们,你不需要为每个项目安装大量各自专属的依赖,这能减少大量的磁盘空间。

当你愿意花时间去调试依赖并且对镜像大小有追求时,slimalpine 都是好的选择。但如果不是追求极致的小——大量使用 C 扩展的项目也无法追求极致的小,那么 slim 会比 alpine 让你更快的完成工作。

推荐使用 alpine 在仅使用了纯 Python 代码或少量的使用了 C 扩展的项目,它能让你构建的镜像保持最小的状态。

如果你觉得本文值得,不妨赏杯茶
没有上一篇
使用多阶段构建优化 Python 依赖安装