個人勉強のログです.
実行環境
# 端末 ProductName: Mac OS X ProductVersion: 10.15.6 BuildVersion: 19G2021 # docker Docker version 19.03.12, build 48a66213fe docker-compose version 1.26.2, build eefe0d31
Docker Buildkit
設定
$ emacs ~/.zshrc export DOCKER_BUILDKIT=1 # docker build export COMPOSE_DOCKER_CLI_BUILD=1 # docker-compose build
ビルド時間の比較
--parallel
: 最大5つのコンテナを並列ビルドbuildkit
: multi stage build で並列実行可能.今回の環境では multi stage build の利用はなし.
時間測定にはtime
コマンドを利用.
# デフォルト docker-compose -f docker-compose.yml build 0.34s user 0.06s system 6% cpu 5.882 total # --parallel docker-compose -f docker-compose.yml build --parallel 0.36s user 0.06s system 7% cpu 5.428 total # --parallel + buildkit docker-compose -f docker-compose.yml build --parallel 0.35s user 0.09s system 88% cpu 0.501 total
Docker image のサイズを小さくする Dockerfile
変更前
FROM python:3.8 RUN apt-get update \ && apt-get install -y \ tcpdump iputils-ping net-tools git \ python3-pip \ && apt-get clean \ && rm -rf /var/lib/apt/lists/ RUN pip3 install grpcio-tools WORKDIR /root/script COPY script/ . ENTRYPOINT ["/bin/bash", "-c", "python3.8 script.py"]
変更後
FROM python:3.8-slim-buster RUN apt-get update && apt-get install -y --no-install-recommends python3-pip \ && apt-get clean \ && rm -rf /var/lib/apt/lists/ \ && pip3 install --no-cache-dir grpcio-tools WORKDIR /root/script COPY script/ . ENTRYPOINT ["/bin/bash", "-c", "python3.8 script.py"]
サイズを小さくするために取り組んだこと
- 軽量なイメージ
apt-get --no-install-recommends
の利用pip3 --no-cache-dir
の利用- 不要パッケージの未インストール
取り組み | サイズ |
---|---|
デフォルト | 1.03GB |
軽量なイメージ | 587MB |
apt-get --no-install-recommends |
261MB |
不要パッケージ未インストール | 181MB |
pip3 --no-cache-dir |
173MB |
今後の課題
- Multi stage build
- Buildkit の理解を深める(キャッシュの効率的な利用など)