调用client.images.get()无法获取Docker镜像,遇ImageNotFound错误求助
Python Docker SDK 镜像找不到问题解决办法
错误原因
你遇到的docker.errors.ImageNotFound错误,是因为本地Docker环境中不存在指定的IMAGE_NAME:latest镜像,代码里的client.images.get()会强制校验本地镜像是否存在,不存在就直接抛出错误;且默认情况下client.containers.run()不会自动拉取缺失的镜像。
解决方法
方法1:先检查并拉取镜像
在获取镜像前捕获ImageNotFound异常,触发远程拉取操作:
import docker client = docker.from_env() IMAGE_NAME = "你的镜像名称" try: # 尝试获取本地已有镜像 client.images.get(IMAGE_NAME) except docker.errors.ImageNotFound: # 本地无镜像则从仓库拉取 client.images.pull(IMAGE_NAME) # 运行容器 client.containers.run( image=IMAGE_NAME, # 你的其他参数 )
方法2:让run方法自动拉取
给containers.run()添加pull=True参数,本地无镜像时会自动从远程仓库拉取:
import docker client = docker.from_env() IMAGE_NAME = "你的镜像名称" client.containers.run( image=IMAGE_NAME, pull=True, # 开启自动拉取 # 你的其他参数 )
注意事项
- 确认镜像名称拼写正确,包含完整标签(比如
ubuntu:22.04而非仅ubuntu),私有镜像要加上仓库地址(如my-registry.com/app:v1) - 如果是私有仓库镜像,需确保Docker客户端已配置对应仓库的认证信息,也可通过
client.images.pull()的auth_config参数传入账号密码
内容的提问来源于stack exchange,提问作者Panda
相关产品推荐
相关产品推荐

