网站建设 上海浦东做网站通过什么挣钱
在项目运维的过程中,偶尔会遇到某个docker image打包时候的Dockerfile版本管理不善无法与image对应的问题,抑或需要分析某个三方docker image的构建过程,这时,就希望能够通过image反推构建时的instruction.
想实现这个过程可以使用一些三方工具比如 dive,但是需要额外的安装,其实docker本身也有可用的功能 docker history,能帮助我们分析image的构建命令.
docker history 命令
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: 每一层镜像的注释信息
 -  
应用场景:
- 了解镜像的构建过程,帮助诊断和修复问题
 - 优化镜像大小,删除无用的中间层
 - 分析镜像的变更历史,方便回滚和迭代
 - 从镜像中反推出 Dockerfile
 
 
在使用的过程中,一般需要加上--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 等,可以根据自己的分析需求来选择.
