iT邦幫忙

2021 iThome 鐵人賽

DAY 21
0
DevOps

container & k8s 奏鳴曲系列 第 21

[13th][Day21] scratch

scratch base image 建立最小 image

之前 build 的許多 image 都是經由 ubuntu:20.04 一起發佈的
其實,一般的任務並不需要這麼多的 binary檔 以及 package

可以試看看 scratch image 來建立一個瘦瘦的 image

準備一個 demo.c 檔

#include <stdio.h>
void main(){
printf("statically built for demo");
}

準備一個 dockerfile

FROM scratch
ADD demo /
CMD ["/demo"]

scratch 是一個空的 image ,裡面沒有任何的 layer 在上面,非常輕量

編譯 demo.c 成為執行檔

docker container run --rm -v ${PWD}:/src -w /src gcc:7.2 gcc -static -o demo demo.c

看看執行檔

ls -lh demo
file -b demo

https://ithelp.ithome.com.tw/upload/images/20210929/20119546qkvMfPmKXI.png
大小為 927K

從剛剛準備的 dockerfile build 一個 image

docker image build -t scratch-demo .

https://ithelp.ithome.com.tw/upload/images/20210929/201195462yUhXG42uW.png

run & 看看 image

docker container run --rm scratch-demo
docker images|grep scratch

https://ithelp.ithome.com.tw/upload/images/20210929/20119546l8U1LUxJ7m.png
大小為 949kB

這個 image 當中就只有 這個靜態執行檔,沒有任何的作業系統 or 其他多安裝的東西https://ithelp.ithome.com.tw/upload/images/20210929/20119546bzP3bKuHrE.png


上一篇
[13th][Day20] docker network
下一篇
[13th][Day22] multistage
系列文
container & k8s 奏鳴曲30

尚未有邦友留言

立即登入留言