Docker:图像的逆向工程

时间:2018-01-12 14:29:08

标签: docker reverse-engineering dockerhub docker-image

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

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

3 个答案:

答案 0 :(得分:6)

您可以使用docker history <image-name> --no-trunc

检查图像的创建方式

<强>更新

检查dive这是一个非常好的工具,可以让您查看图像图层。

答案 1 :(得分:5)

正如yamenk所说docker history是关键。

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

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

从网站提取

请注意,该脚本仅适用于本地图像中存在的图像 存储库(您键入docker图像时看到的内容)。如果你想 为本地仓库中不存在的图像生成Dockerfile 你首先需要停靠者拉它。

例如,您可以再次运行它,以查看代码

$ 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

答案 2 :(得分:1)

您可以使用 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"]