使用docker的python基础镜像时要指定patch版本原理
作者:ponponon
python 项目打包成 docker 镜像
需要把 python 项目打包成 docker 镜像的时候,我都是 FROM python:3.11.5-bookworm
在 python:3.11.5-bookworm
中:
3
表示 Python 的主要版本号。在这个例子中,它指的是 Python 3系列。Python 分为两个主要版本系列,即 Python 2 和 Python 3,其中 Python 3 是当前推荐使用的版本。11
表示 Python 的次要版本号。在这个例子中,它表示 Python 3.11 版本。次要版本通常包含新功能和改进,但与主要版本不同,它们通常是向后兼容的。5
表示 Python 的修订版本号。在这个例子中,它表示 Python 3.11.5 的修订版本。修订版本通常包含错误修复和小的改进。
引用
综合起来,python:3.11.5-bookworm
表示一个基于 Python 3.11.5 版本的 Docker 镜像,其中可能包含特定的 Debian 发行版(在这里是 "bookworm")。
为什么要把 5 这个 patch version 带上呢?
因为 docker build 的时候,会无脑复用已有的基础镜像
比如我的本地已经有 python:3.10-bullseye 了,是很久之前拉取的,对应的 python 版本的 python3.10.0
╰─? docker run --rm -it python:3.10-bullseye python --version Python 3.10.0
现在是 2023年10月12日了,此时的 python3.10 最新的版本已经是 Python 3.10.13
此时我用类似下面 Dockerfile 打包镜像,docker 会把 python:3.10-bullseye 从 python3.10.0 更新到 python3.10.13 吗?
FROM python:3.10-bullseye RUN mkdir /code WORKDIR /code
答案是不会,来验证一下
docker build -t "ponponon/image_search_engine:2023.09.07.1" .
[+] Building 0.7s (7/7) FINISHED docker:default
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 94B 0.0s
=> [internal] load metadata for docker.io/library/python:3.10-bullseye 0.0s
=> CACHED [1/3] FROM docker.io/library/python:3.10-bullseye 0.0s
=> [2/3] RUN mkdir /code 0.6s
=> [3/3] WORKDIR /code 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:13770b282346a96fabcf2010b5c815feee3ef76935cdc7e87e719aa0d376854d 0.0s
=> => naming to docker.io/ponponon/image_search_engine:2023.09.07.1
查看打包镜像中的 python 版本
╰─? docker run --rm -it ponponon/image_search_engine:2023.09.07.1 python --version 130 ? Python 3.10.0
可以看到,里面的 python 版本还是 3.10.0
那么,怎么把 「python:3.10-bullseye 从 python3.10.0 更新到 python3.10.13 」呢?
在本地执行 docker pull python:3.10-bullseye
可行吗?不一定可行
docker 如何升级 python 镜像
老机器上的 python
版本还是 10.1
??
─? docker run -it --rm python:3.10-buster python --version Python 3.10.1
新机器上的 python
版本是 10.4
??
─? docker run -it --rm python:3.10-buster python --version Python 3.10.4
我想把老机器上的 3.10-buster
也变为 10.4
docker
有什么命令可以升级镜像的?
我并不想: 先删除镜像,再拉取镜像。因为删不掉(奇怪的依赖关系)
我希望可以有类似下面的命令来让 docker 自动从 docker hub 升级镜像版本 ??
docker pull python:3.10-buster --upgrade
以上就是使用docker的python基础镜像时要指定patch版本原理的详细内容,更多关于docker python基础镜像的资料请关注脚本之家其它相关文章!