web-dev-qa-db-fra.com

Docker: Reverse Engineering d'une image

Lorsque nous utilisons Docker, il est très facile de pousser et de tirer l'image dans un référentiel public dans notre https://hub.docker.com mais ce dépôt est gratuit uniquement pour l'image publique (un seul peut être privé).

Actuellement, il est possible d'exécuter une ingénierie inverse d'une image publique dans le référentiel et de lire le code source du projet?

11
daniele3004

Vous pouvez vérifier comment une image a été créée à l'aide de docker history <image-name> --no-trunc

Mise à jour:

Vérifiez plongée qui est un très bel outil qui vous permet de visualiser les couches d'image.

8
yamenk

Comme l'a dit Yamenk, docker history Est la clé de tout cela.

Comme https://github.com/CenturyLinkLabs/dockerfile-from-image est cassé, vous pouvez utiliser les dernières

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

Extrait du site

Notez que le script ne fonctionne qu'avec les images qui existent dans votre référentiel d'images local (ce que vous voyez lorsque vous tapez des images docker). Si vous souhaitez générer un Dockerfile pour une image qui n'existe pas dans votre référentiel local, vous devez d'abord le docker le retirer.

Par exemple, vous pouvez l'exécuter contre lui-même, pour voir le code

$ 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