web-dev-qa-db-ja.com

Docker:イメージのリバースエンジニアリング

Dockerを使用する場合、https://hub.docker.comのパブリックリポジトリでイメージをプッシュアンドプルするのは非常に簡単ですが、このリポジトリはパブリックイメージに対してのみ無料です(プライベートにできるのは1つだけです)。

現在、リポジトリ内のパブリックイメージのリバースエンジニアリングを実行して、プロジェクトのソースコードを読み取ることは可能ですか?

11
daniele3004

docker history <image-name> --no-truncを使用して、画像がどのように作成されたかを確認できます

更新:

チェック dive これは、画像レイヤーを表示できる非常に優れたツールです。

8
yamenk

Yamenkが言ったように、_docker history_はこれの鍵です。

https://github.com/CenturyLinkLabs/dockerfile-from-image が壊れているため、最近使用できます

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

サイトから抽出

このスクリプトは、ローカルイメージリポジトリに存在するイメージ(dockerイメージを入力したときに表示されるもの)に対してのみ機能することに注意してください。ローカルリポジトリに存在しないイメージのDockerfileを生成する場合は、最初にそれをdocker pullする必要があります。

たとえば、それ自体をもう一度実行して、コードを表示できます

$ 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

5
user2915097