docker - 为 Dockerfile 选择 TAG 的好方法
问题描述
我想知道,有什么好方法来决定Dockerfile
.
例如,我很清楚我的要求。
- 我需要 Python 3.6
- 由于体积小,我需要 Alpine 发行版。
我应该选择
FROM python:3.6.6-alpine3.8
或者
FROM python3.6-alpine
解决方案
即使通常python:3.6-alpine
是.python:3.6.6-alpine3.8
python:3.6.6-alpine3.8
Dockerfile
它避免了对阅读 的人以及使用图像的人的误解,例如:
哦!为什么该库在图像中不可用?也许是因为 Alpine 版本?顺便问一下,Alpine 版本是什么?我去看看
/etc/alpine-release
看看...
对于 Python 版本,它更复杂,因为使用标签,如果版本发布3.6.6
,您的构建最终可能会失败;3.6.7
实际上,通过查看Docker store 上的 Python 图像版本,似乎只保留了具有最新修复版本的图像。但这一切都取决于您的镜像是否需要重建,或者它是否只是推送一次到您自己的注册表然后用作基础镜像。如果需要定期构建,在这种特殊情况下,我可能会使用3.6-alpine3.8
,因为通常情况下,修复版本不会删除兼容性,只会添加小的改进/错误修复。
简而言之,选择标签时无需花费任何成本,并在使用图像时节省大量解释:您只需阅读Dockerfile
. 但要小心,如果这些标签的预期寿命很短。
推荐阅读
- python - 与所有文档作为本地 RAM 中的局部变量相比,带有 MongoDB 文档的 Python 迭代非常慢
- kotlin - kotlin 中是否有类似 joinToString for Int 的方法?
- getstream-io - 条件渲染和流的困难——使用自定义 MessageContent 或基于 message.customField 值的默认 MessageContent
- python - 将 Python 的 deepcopy 用于不同的 django 模型
- docker - Grafana docker /etc/grafana/grafana.ini 不可读
- next.js - Vercel Edge Functions 在本地工作,并在尝试使用“主机名重写”时在生产中给出 404
- python - 返回包含特定值的多索引 df 中的行
- python - 按值重复颜色的堆叠条形图和每个 bin 的固定长度
- flutter - 任务 ':app:validateSigningDebug' 执行失败。java.util.concurrent.ExecutionException:
- c# - 使用没有设置 smtp 服务器的默认邮件应用程序在 c# 中发送带有附件文件的邮件