docker 如何升级 python 镜像
老机器上的 python
版本还是 10.1
?
─➤ docker run -it --rm python:3.10-buster python --versionPython 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 --versionPython 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 --versionPython 3.11.4
但是现在是 2023.10.12,Python 3.11.6 都发布了
可能是因为 python:3.11-buster
本身就是没有更新到 3.11.6 吧
去 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 pythonpython 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 --versionPython 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