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 run --rm -it python:3.11-buster python --version

Python 3.11.1

重新拉取

╰─➤  docker pull python:3.11-buster                                  

3.11-buster: Pulling from library/python

ac8bb7e1a323: Pull complete

3b1c264c0ad4: Pull complete

b1e7e053c9f6: Pull complete

a2e1e233599c: Pull complete

0ebfe287e976: Pull complete

de5c87c207fd: Pull complete

7d34d7fb27b1: Pull complete

342382b8cc09: Pull complete

Digest: sha256:3a19b4d6ce4402d11bb19aa11416e4a262a60a57707a5cda5787a81285df2666

Status: Downloaded newer image for python:3.11-buster

docker.io/library/python:3.11-buster

拉取之后,发现有更新了

╰─➤  docker run --rm -it python:3.11-buster python --version

Python 3.11.4

但是现在是 2023.10.12,Python 3.11.6 都发布了

可能是因为 python:3.11-buster 本身就是没有更新到 3.11.6 吧

docker 如何升级 python 镜像

去 dockerhub 看了一下,确实,buster + 3.11 最后停留在 3.11.4 了

如果需要 3.11.6 可以指定更新的 debian 版本,比如拉取 docker pull python:3.11-bullseye 或者 python:3.11-bookworm

或者直接指明 patch version,比如 python:3.11.6-bullseye 或者 python:3.11.6-bookworm


但不是每次执行 docker pull 都会更新本地镜像的

比如

╰─➤  docker image ls | grep python

python 3.8-bookworm d2a527900b6d 6 weeks ago 997MB

python 3.10.11-bullseye c339f65d6ddf 6 months ago 912MB

python 3.10.10-bullseye 2b8b079d7548 6 months ago 912MB

python 3.11-buster 4bd1a11e4dc7 8 months ago 905MB

python <none> e9d407238827 10 months ago 893MB

python 3.10-buster 06132ec49b06 21 months ago 889MB

python 3.10-bullseye c05c608cfa20 24 months ago 915MB

我本地的 python:3.10-bullseye 是两年前拉取的,里面是 python3.10.0

╰─➤  docker run --rm -it python:3.10-bullseye python --version 

Python 3.10.0

此时我执行 docker pull python:3.10-bullseye

╰─➤  docker pull python:3.10-bullseye                                                                                                                                                                                                                                                                                127 ↵

3.10-bullseye: Pulling from library/python

Digest: sha256:fc1a412bab02c65978ad1cdc4ad3529d00886c9997d928bb9d6811b1198b72dc

Status: Image is up to date for python:3.10-bullseye

docker.io/library/python:3.10-bullseye

居然和我说,我本地的就已经是最新的了!太离谱了

所以我换了一台机器,换了一台之前没有拉取过 python:3.10-bullseye 的处女机

─➤  docker pull python:3.10-bullseye           

3.10-bullseye: Pulling from library/python

ddf874abf16c: Pull complete

5c1459d3ab8b: Pull complete

29ab00e7798a: Pull complete

7883a473306c: Pull complete

c3ab175b762c: Pull complete

9f11cb399571: Pull complete

cfb416449119: Pull complete

1365a3c2b71e: Pull complete

Digest: sha256:e917e3e93525f97fc343135efc2b3295a11b02450ff8d4eeaff25323c73caf6b

Status: Downloaded newer image for python:3.10-bullseye

docker.io/library/python:3.10-bullseye

可以看到,在新的机器上,这个 python:3.10-bullseye 里面的 python 就是最新的 Python 3.10.13

╰─➤  docker run --rm -it python:3.10-bullseye python --version 

Python 3.10.13


python:3.10-bullseye 的问题我解决了

换了一个 docker 镜像源就好了

原来的

{

"registry-mirrors": [

"https://hz4anb2p.mirror.aliyuncs.com",

"https://mirror.ccs.tencentyun.com"

],

"default-address-pools": [

{

"base": "172.17.0.0/16",

"size": 16

},

{

"base": "172.21.0.0/16",

"size": 24

},

{

"base": "172.22.0.0/16",

"size": 24

}

]

}

现有的

{

"registry-mirrors": [

"https://docker.mirrors.sjtug.sjtu.edu.cn"

],

"default-address-pools": [

{

"base": "172.17.0.0/16",

"size": 16

},

{

"base": "172.21.0.0/16",

"size": 24

},

{

"base": "172.22.0.0/16",

"size": 24

}

]

}

只要关注 registry-mirrors 的变化
╰─➤  docker pull python:3.10-bullseye                        

3.10-bullseye: Pulling from library/python

ddf874abf16c: Pull complete

5c1459d3ab8b: Pull complete

29ab00e7798a: Pull complete

7883a473306c: Pull complete

c3ab175b762c: Pull complete

9f11cb399571: Pull complete

cfb416449119: Pull complete

1365a3c2b71e: Pull complete

Digest: sha256:2748aa472da6013d989fa015e794d0e76b901ca14efd5c67ce2fb999f0b4dfee

Status: Downloaded newer image for python:3.10-bullseye

docker.io/library/python:3.10-bullseye

这个时候就正常了

╰─➤  docker run --rm -it python:3.10-bullseye python --version

Python 3.10.13


回答:

这镜像本身不就分3.10.1、3.10.4么
https://hub.docker.com/_/pyth...
可能你老机器上用的时候3.10.4还没出来吧
不想拉新的 那就进容器手动升级python版本然后commit吧

以上是 docker 如何升级 python 镜像 的全部内容, 来源链接: utcz.com/p/938421.html

回到顶部