LoginSignup
1
0

More than 3 years have passed since last update.

docker-slim前後のdockerfileの差異を比較

Last updated at Posted at 2020-10-11

手順

  # サンプルnode.jsアプリのDockerイメージを作成する
~ $ git clone https://github.com/docker-slim/examples.git

  # node_ubuntuのDockerfileがあるディレクトリに移動
~ $ cd examples/node_ubuntu/

  # Dockerfileをビルドし,イメージを作成
~ $ docker build -t my/sample-node-app .

  # 作成したイメージに対して,docker-slimを適用する
~ $ docker-slim build my/sample-node-app

サイズ削減度合いは??

~ $ docker images
    REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
    my/sample-node-app.slim   latest              b2c7843a52fa        3 hours ago         14MB
    my/sample-node-app        latest              3c6ddc217be2        4 hours ago         414MB

下が元のイメージ,上が最適化した後のイメージです.
docker-slimで最適化したイメージには「.slim」が後ろに追加されるようです.
サイズは414MBから14MBまで小さくなってます.
何が起きてるのか。。

dockerfileの比較

  • docker-slimを適応したイメージのdockerfileは以下のディレクトリにある
    • [docker-slim directory]/.images/[YOUR_APP_IMAGE_ID]/artifacts/
Dockerfile-before
FROM ubuntu:14.04
RUN apt-get update && \
        apt-get install -y curl software-properties-common python-software-properties && \
        add-apt-repository ppa:chris-lea/node.js && \
        apt-get update && \
        apt-get install -y build-essential \
        nodejs && \
        mkdir -p /opt/my/service
COPY service /opt/my/service
WORKDIR /opt/my/service
RUN npm install
EXPOSE 1300
ENTRYPOINT ["node","/opt/my/service/server.js"]
Dockerfile-after
FROM scratch
LABEL docker-slim.version="darwin|Transformer|1.32.0|10b628fc3cd9f903237b9c31a6aba5ac4e6bc9c8|2020-08-24_06:14:32AM"
ENV PATH "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

ADD files.tar /
WORKDIR /opt/my/service
EXPOSE 1300/tcp
ENTRYPOINT ["node","/opt/my/service/server.js"]

FROM句が ubuntu:14.04 から scratch に変わっています.
FROM scratch はベースが無いということを意味していて,ベースOSの部分から書いているということを示しているようです.
OS部分は ADD ubuntuのファイルシステムを圧縮したものだと想定されるfiles.tarが担っているみたい.

参考リンク

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0