使用docker的python基础镜像时要指定patch版本原理

 更新时间:2023年10月13日 14:16:26   作者:ponponon  
这篇文章主要为大家介绍了使用docker的python基础镜像时要指定patch版本原理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

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基础镜像的资料请关注脚本之家其它相关文章!

相关文章

  • docker私库Harbor的架构与组件说明

    docker私库Harbor的架构与组件说明

    今天小编就为大家分享一篇关于docker私库Harbor的架构与组件说明,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Docker部署Kafka以及Spring Kafka实现

    Docker部署Kafka以及Spring Kafka实现

    这篇文章主要介绍了Docker部署Kafka以及Spring Kafka实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • MacOS使用Docker创建MySQL主从数据库的方法

    MacOS使用Docker创建MySQL主从数据库的方法

    这篇文章主要介绍了MacOS使用Docker创建MySQL主从数据库,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • 使用 Docker 部署 RStudio 的完美教程

    使用 Docker 部署 RStudio 的完美教程

    在数据科学和统计分析中,RStudio是重要的IDE,但传统安装可能复杂,Docker提供了容器化技术,简化了RStudio的部署,本文介绍使用Docker部署RStudio的方法,包括环境准备、拉取镜像、创建容器命令等步骤,帮助用户快速搭建稳定高效的RStudio环境
    2024-09-09
  • Docker compose 编排工具详解

    Docker compose 编排工具详解

    Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,您可以使用Compose文件来配置应用程序的服务。然后,使用单个命令,您可以从配置中创建并启动所有服务
    2021-09-09
  • 深入浅析Docker容器中的Patroni

    深入浅析Docker容器中的Patroni

    今天将向大家介绍,如何搭建容器下的Patroni集群环境,Patroni作为开箱即用PG高可用工具,越来越多的被各个厂商用于云环境下使用
    2021-11-11
  • CentOS 7 sshd 链接被拒绝问题解决办法

    CentOS 7 sshd 链接被拒绝问题解决办法

    这篇文章主要介绍了CentOS 7 sshd 链接被拒绝问题解决办法的相关资料,需要的朋友可以参考下
    2017-03-03
  • Elasticsearch使用常见问题解决方案

    Elasticsearch使用常见问题解决方案

    这篇文章主要介绍了Elasticsearch使用常见问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Spring Boot使用Docker分层打包的设置方法

    Spring Boot使用Docker分层打包的设置方法

    Spring Boot 现在支持分层打包技术了, 我们也来用一用, 加速Docker打包, 构建的时候速度也会非常快.本文重点给大家介绍Spring Boot使用Docker分层打包的设置方法,感兴趣的朋友一起看看吧
    2021-08-08
  • win10子系统ubuntu(WSL) 安装Docker的教程(图文详解)

    win10子系统ubuntu(WSL) 安装Docker的教程(图文详解)

    现在 Docker 有专门的 Win10 专业版系统的安装包,需要开启Hyper-V,具体开启方法文中给大家介绍的很详细,这篇文章主要介绍了win10子系统ubuntu(WSL) 安装Docker,需要的朋友可以参考下
    2019-10-10

最新评论