
laniksj/dfimage!GitHub Repo Size !GitHub Code Size in Bytes !GitHub Last Commit !GitHub Commit Activity
dfimage是一个从Docker镜像***工程生成Dockerfile的工具。它通过分析Docker存储的镜像层元数据,重建(近似)用于生成该镜像的Dockerfile指令,类似于docker history命令但更完整。灵感来源于dockerfile-from-image和Container Source项目。
docker images可见的镜像)docker run命令执行FROM指令docker run和Docker socket访问)docker pull获取)/var/run/docker.sock)以允许访问Docker APIbashdocker run -v /var/run/docker.sock:/var/run/docker.sock dfimage <镜像名:标签>
<镜像名:标签>:必需,指定目标镜像的名称和标签(如ruby:latest),支持完整镜像名或简写形式-v /var/run/docker.sock:/var/run/docker.sock:必需,挂载Docker socket以访问Docker API拉取目标镜像(如官方ruby镜像):
bashdocker pull ruby:latest # 输出示例: # latest: Pulling from library/ruby # ... # Status: Downloaded newer image for ruby:latest
拉取dfimage镜像:
bashdocker pull ghcr.io/laniksj/dfimage # 输出示例: # Using default tag: latest # latest: Pulling from dfimage # ... # Status: Downloaded newer image for ghcr.io/laniksj/dfimage:latest
创建便捷别名(可选,简化后续命令):
bashalias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm ghcr.io/laniksj/dfimage"
生成Dockerfile:
bashdfimage ruby:latest # 输出示例(生成的Dockerfile内容): # FROM buildpack-deps:latest # RUN useradd -g users user # RUN apt-get update && apt-get install -y bison procps # RUN apt-get update && apt-get install -y ruby # ADD dir:03090a5fdc5feb8b4f1d6a69214c37b5f6d653f5185cddb6bf7fd71e6ded561c in /usr/src/ruby # WORKDIR /usr/src/ruby # RUN chown -R user:users . # USER user # RUN autoconf && ./configure --disable-install-doc # RUN make -j"$(nproc)" # RUN make check # USER root # RUN apt-get purge -y ruby # RUN make install # RUN echo 'gem: --no-rdoc --no-ri' >> /.gemrc # RUN gem install bundler # ONBUILD ADD . /usr/src/app # ONBUILD WORKDIR /usr/src/app # ONBUILD RUN [ ! -e Gemfile ] || bundle install --system
将别名添加到shell配置文件(如~/.bashrc或~/.zshrc):
bashecho 'alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm ghcr.io/laniksj/dfimage"' >> ~/.bashrc source ~/.bashrc
Docker镜像由一系列层组成,每层对应Dockerfile中的一条指令。dfimage通过以下步骤重建Dockerfile:
RUN、USER、WORKDIR等)FROM指令的基础镜像通过docker inspect <层ID>可查看层对应的指令,例如:
bashdocker inspect 011aa33ba92b # 输出片段: # { # ... # "ContainerConfig": { # "Cmd": [ # "/bin/sh", # "-c", # "#(nop) ONBUILD RUN [ ! -e Gemfile ] || bundle install --system" # ], # ... # } # }
FROM指令,可能导致基础镜像之后的层指令未被完全还原dockerfileADD dir:03090a5fdc5feb8b4f1d6a69214c37b5f6d653f5185cddb6bf7fd71e6ded561c in /usr/src/ruby
docker pull获取远程镜像可通过以下命令从容器中提取文件(非dfimage核心功能,为附加实用技巧):
bashdocker run --rm --entrypoint cat <镜像名> /path/to/file > 本地文件名
![MIT License]([***]
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务