DockerSlimは不要なファイルを削除するなどしてイメージを軽量化する。
またコンテナが必要なシステムコールを抽出して、seccompプロファイルを作成する。
DockerSlimのインストール
# wget -d https://downloads.dockerslim.com/releases/1.35.2/dist_linux.tar.gz # tar xzvf dist_linux.tar.gz # cp dist_linux/docker-slim /usr/bin/ # cp dist_linux/docker-slim-sensor /usr/bin/ # docker-slim --version docker-slim version linux|Transformer|1.35.2|186f87fbee28f404a96e2204ea2b51014f32cff4|2021-05-03_02:30:01AM
nginxイメージを軽量化してみた
133MB を 11.1MB に軽量化できた。
# docker run -d -p 80:80 nginx # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d58fc2e1bf5a nginx "/docker-entrypoint.…" 2 seconds ago Up 1 second 0.0.0.0:80->80/tcp, :::80->80/tcp brave_cartwright # docker stop d58fc2e1bf5a # docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest f0b8a9a54136 4 days ago 133MB # docker-slim build nginx ... cmd=build info=results artifacts.location='/tmp/docker-slim-state/.docker-slim-state/images/f0b8a9a541369db503ff3b9d4fa6de561b300f7363920c2bff4577c6c24c5cf6/artifacts' cmd=build info=results artifacts.report='creport.json' cmd=build info=results artifacts.dockerfile.reversed='Dockerfile.fat' cmd=build info=results artifacts.dockerfile.optimized='Dockerfile' cmd=build info=results artifacts.seccomp='nginx-seccomp.json' cmd=build info=results artifacts.apparmor='nginx-apparmor-profile' cmd=build state=done ... # docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx.slim latest 18b5a5a26e22 About a minute ago 11.1MB nginx latest f0b8a9a54136 4 days ago 133MB # docker run -d -p 80:80 nginx.slim # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7c5736658b48 nginx.slim "/docker-entrypoint.…" 3 seconds ago Up 1 second 0.0.0.0:80->80/tcp, :::80->80/tcp romantic_beaver
seccompプロファイルは以下場所に保存された。
tmp/docker-slim-state/.docker-slim-state/images/f0b8a9a541369db503ff3b9d4fa6de561b300f7363920c2bff4577c6c24c5cf6/artifacts/nginx-seccomp.json