Dockerのイメージをビルドするとき注意すること

March 20, 2024

Intro

クレデンシャルをビルド中に削除しても、レイヤに残ってしまう件について実際に手を動かして確認してみます。

  • docker の環境構築についてはこちら 環境構築

事前準備

  • 適当なディレクトリを作成し、Dockerfile を作成します。
  • シークレットにすべき内容を含むファイルを作成し、削除します。
ubuntu@test-vm-01:~/test$ cat Dockerfile
FROM public.ecr.aws/nginx/nginx:1.25-alpine-slim
RUN echo "this is secret" > /secret.txt
RUN rm /secret.txt
  • build
ubuntu@test-vm-01:~/test$ docker build -f Dockerfile -t test:latast .
  • イメージを保存し、レイヤを確認します。
ubuntu@test-vm-01:~/test$ docker save test:latast | tar -xC dump/
ubuntu@test-vm-01:~/test$ grep "this is secret" dump/blobs/sha256/26e6cd8b82ed33846375b5484f907ec7547b1b58919e607d7954f6ed9f36f5ab
...
{"created":"2024-03-21T16:21:04.288826451+09:00","created_by":"RUN /bin/sh -c echo \"this is secret\" \u003e /secret.txt # buildkit","comment":"buildkit.dockerfile.v0"},{"created":"2024-03-21T16:21:04.637976236+09:00","created_by":"RUN /bin/sh -c rm /secret.txt # buildkit","comment":"buildkit.dockerfile.v0"}],"os":"linux","rootfs":{"type":"layers","diff_ids":
...

まとめ

  • クレデンシャルをビルド中に削除しても、レイヤに残ってしまうので、公開するイメージには含めないようにすることが重要です。
Nifty tech tag lists from Wouter Beeftink