赞
踩
在项目运维的过程中,偶尔会遇到某个docker image打包时候的Dockerfile版本管理不善无法与image对应的问题,抑或需要分析某个三方docker image的构建过程,这时,就希望能够通过image反推构建时的instruction.
想实现这个过程可以使用一些三方工具比如 dive
,但是需要额外的安装,其实docker本身也有可用的功能 docker history
,能帮助我们分析image的构建命令.
docker history
命令是一个非常有用的 Docker 工具,它可以帮助我们了解 Docker 镜像的构建过程和历史。以下是对这个命令的详细介绍:
功能: docker history
命令可以显示 Docker 镜像的构建历史,包括每一层的操作指令、大小、创建时间等信息。这些信息对于理解和维护 Docker 镜像非常重要。
语法:
docker history [OPTIONS] IMAGE
其中 OPTIONS
包括:
-H, --human
: 以人类可读的格式显示镜像大小-q, --quiet
: 只显示镜像 ID-no-trunc
: 不截断输出示例:
docker history nginx:latest
这个命令会显示 nginx:latest
镜像的构建历史,包括每一层的操作指令、大小、创建时间等信息。
输出解读:
IMAGE ID
: 每一层镜像的 IDCREATED
: 每一层镜像的创建时间CREATED BY
: 每一层镜像的构建指令SIZE
: 每一层镜像的大小COMMENT
: 每一层镜像的注释信息应用场景:
在使用的过程中,一般需要加上--no-trunc
不截断输出,因为有些命令长度较长,例如RUN
命令,这里笔者给出一个示例:
RUN /bin/sh -c pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ && pip install edge-tts PyMCubes imageio[ffmpeg] torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 torch-ema && pip install numpy~=1.26.0 pyaudio~=0.2.13 soundfile~=0.12.1 resampy~=0.4.2 transformers~=4.32.1 requests~=2.31.0 scipy~=1.11.3 tqdm~=4.65.0 tensorboardx~=2.6.2.2 pandas~=2.1.1 opencv-python~=4.8.1.78 matplotlib~=3.8.1 trimesh~=4.0.2 imageio~=2.31.6 lpips~=0.1.4 rich~=13.6.0 packaging~=23.1 pillow~=10.0.1 setuptools~=68.0.0 jinja2~=3.1.2 pyyaml~=6.0.1 tabulate~=0.9.0 loguru~=0.7.2 pydub~=0.25.1 flask~=2.2.2 websockets flask-sock dynaconf~=3.2.4 torchvision~=0.15.2 nbformat~=5.9.2 beautifulsoup4~=4.12.2 nbconvert~=7.10.0 gradio~=4.18.0 # buildkit
从这些输出中就可以尽量去反推构建的过程,尤其是一些依赖包的安装过程.
除了上面提到的dive
,还有一些其他工具可以帮助分析构建命令实现反推dockerfile,比如dfimage
,Whaler
,Dedockify
等,可以根据自己的分析需求来选择.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。