如何无需拉取Docker Hub镜像即可查看其内置系统、软件及依赖信息?
无需拉取Docker镜像查询内置内容的可行方案
以下三种方案都可以满足你查询镜像基础系统、预装软件、Python库的需求,不需要手动解析镜像层执行命令:
方案1:使用skopeo直接读取镜像文件(无需完整拉取镜像)
skopeo是无需依赖Docker守护进程、也无需将镜像拉取到本地Docker存储的镜像操作工具,操作步骤如下:
- 导出镜像的分层文件到本地临时目录,仅拉取你需要读取的部分内容:
skopeo copy docker://tensorflow/tensorflow:2.6.0rc0-gpu dir:./tmp-tf-image - 解压对应层的压缩文件后即可直接读取镜像内所有文件:
- 查看基础操作系统:读取解压后
etc/os-release的内容即可得到精确的发行版和版本号 - 验证Python、pip是否安装:查找
usr/bin/路径下的python、pip二进制文件即可确认 - 查看已安装Python库:直接遍历
usr/lib/python*/site-packages/路径下的目录,即可确认是否有numpy等第三方库
- 查看基础操作系统:读取解压后
方案2:临时运行镜像执行查询命令(不保留镜像到本地)
如果本地已有Docker环境,无需安装额外工具,可直接运行临时容器执行查询命令,执行完成后容器和镜像层不会残留:
- 查询基础操作系统信息:
docker run --rm --entrypoint="" tensorflow/tensorflow:2.6.0rc0-gpu cat /etc/os-release - 查询Python、pip版本:
docker run --rm --entrypoint="" tensorflow/tensorflow:2.6.0rc0-gpu bash -c "python3 --version && pip3 --version" - 验证numpy是否安装并查看版本:
docker run --rm --entrypoint="" tensorflow/tensorflow:2.6.0rc0-gpu python3 -c "import numpy; print(numpy.__version__)"
方案3:直接获取镜像配置元信息
公开镜像都包含预设的配置文件,无需拉取镜像即可读取,能快速拿到环境变量、基础镜像标注等信息:skopeo inspect docker://tensorflow/tensorflow:2.6.0rc0-gpu
返回结果中的Env字段包含镜像预设的所有环境变量,Labels字段通常会标注基础操作系统版本、预装核心软件版本等元数据。
内容的提问来源于stack exchange,提问作者Zabir Al Nazi Nabil
相关产品推荐
相关产品推荐

