從映像檔產生 Dockerfile
CenturyLinkLabs 釋出 dockerfile-from-image 工具,以逆向工程建立出 Dockerfile 。 類似 docker history 指令,透過映像檔每一層的 metadata 來重建出那 Dockerfile ,即便沒有提供任何資訊。

使用方法

首先 docker pull centurylink/dockerfile-from-image 這已包好 Ruby script 的映像檔, 接下來,執行下面命令,就可得到反推所產生的 Dockerfile.txt :
1
docker run -v /var/run/docker.sock:/var/run/docker.sock \
2
centurylink/dockerfile-from-image <IMAGE_TAG_OR_ID> > Dockerfile.txt
Copied!
<IMAGE_TAG_OR_ID> 參數可以任何包含 tag 的映像檔名稱。

範例

以下是個示範,如何將官方 Ruby 的映像檔來產生出 Dockerfile。
1
$ docker pull ruby
2
Pulling repository ruby
3
4
$ docker run -v /run/docker.sock:/run/docker.sock centurylink/dockerfile-from-image
5
Usage: dockerfile-from-image.rb [options] <image_id>
6
-f, --full-tree Generate Dockerfile for all parent layers
7
-h, --help Show this message
8
9
$ docker run -v /run/docker.sock:/run/docker.sock centurylink/dockerfile-from-image ruby
10
FROM buildpack-deps:latest
11
RUN useradd -g users user
12
RUN apt-get update && apt-get install -y bison procps
13
RUN apt-get update && apt-get install -y ruby
14
ADD dir:03090a5fdc5feb8b4f1d6a69214c37b5f6d653f5185cddb6bf7fd71e6ded561c in /usr/src/ruby
15
WORKDIR /usr/src/ruby
16
RUN chown -R user:users .
17
USER user
18
RUN autoconf && ./configure --disable-install-doc
19
RUN make -j"$(nproc)"
20
RUN make check
21
USER root
22
RUN apt-get purge -y ruby
23
RUN make install
24
RUN echo 'gem: --no-rdoc --no-ri' >> /.gemrc
25
RUN gem install bundler
26
ONBUILD ADD . /usr/src/app
27
ONBUILD WORKDIR /usr/src/app
28
ONBUILD RUN [ ! -e Gemfile ] || bundle install --system
Copied!
Copy link