dan*_*004 6 reverse-engineering docker dockerhub docker-image
当我们使用Docker时,它很容易在我们的公共存储库中推送和拉取图像,https://hub.docker.com但是这个存储库只对公共图像是免费的(只有一个可以是私有的).
目前可以在存储库中执行公共映像的逆向工程并读取项目的源代码吗?
正如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
您可以使用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)
| 归档时间: |
|
| 查看次数: |
6876 次 |
| 最近记录: |