Docker:图像的逆向工程

dan*_*004 6 reverse-engineering docker dockerhub docker-image

当我们使用Docker时,它很容易在我们的公共存储库中推送和拉取图像,https://hub.docker.com但是这个存储库只对公共图像是免费的(只有一个可以是私有的).

目前可以在存储库中执行公共映像的逆向工程并读取项目的源代码吗?

yam*_*enk 8

您可以检查如何使用创建图像 docker history <image-name> --no-trunc

更新:

检查潜水,这是一个非常不错的工具,可让您查看图像图层。


use*_*097 5

正如yamenk所说docker history,这是关键。

由于https://github.com/CenturyLinkLabs/dockerfile-from-image损坏,您可以使用最新的

https://hub.docker.com/r/dduvnjak/dockerfile-from-image/

从站点中提取

请注意,该脚本仅适用于本地映像存储库中存在的映像(键入docker images时看到的内容)。如果要为本地存储库中不存在的映像生成Dockerfile,则首先需要Docker拉取它。

例如,您可以自己运行一次,以查看代码

$ docker run --rm -v /run/docker.sock:/run/docker.sock centurylink/dockerfile-from-image ruby 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


Jim*_*ien 5

您可以使用laniksj/dfimage对图像进行逆向工程。

例如:

# docker run -v /var/run/docker.sock:/var/run/docker.sock laniksj/dfimage <YOUR_IMAGE_ID>
FROM node:12.4.0-alpine
RUN /bin/sh -c apk update
RUN /bin/sh -c apk -Uuv add groff less python py-pip
RUN /bin/sh -c pip install awscli
RUN /bin/sh -c apk --purge -v del py-pip
RUN /bin/sh -c rm /var/cache/apk/*
RUN /bin/sh -c apk add --no-cache curl
ADD dir:4afc740ff29e4a32a34617d2715e5e5dc8740f357254bc6d3f9362bb04af0253 in /app
COPY file:b57abdb61ae72f3a25be67f719b95275da348f9dfb63fb4ff67410a595ae1dfd in /usr/local/bin/
WORKDIR /app
RUN /bin/sh -c npm install
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["node" "app.js"]
Run Code Online (Sandbox Code Playgroud)