以前就覺得 Docker image 很肥.
最近發現就算 Dockerfile 只有執行一行 apt update
也是會佔空間的!!!
舉個如下 Dockerfile 作為例子
FROM ubuntu:20.04
RUN apt update ;
$ docker build . -t temp
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
temp latest b105cc6751ec 5 minutes ago 105MB
ubuntu 20.04 fb52e22af1b0 3 months ago 72.8MB
$ docker history temp:latest
IMAGE CREATED CREATED BY SIZE COMMENT
b105cc6751ec About a minute ago /bin/sh -c apt update ; 31.9MB
fb52e22af1b0 3 months ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 3 months ago /bin/sh -c #(nop) ADD file:d2abf27fe2e8b0b5f… 72.8MB
根據這份官方文件的說法, 原因是 apt update 後的 cache 佔了空間.
所以最好的作法是 apt install
完需要的 package 後, 把 APT cache 清掉.
$ rm -rf /var/lib/apt/lists/*
把上面的例子改成如下的 Dockerfile
FROM ubuntu:20.04
RUN apt update && rm -rf /var/lib/apt/lists/*
Docker build 出來後的 image 就可以發現 size 沒有增加了.
$ docker build . -t temp
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
temp latest afed09a38e9e 5 minutes ago 72.8MB
ubuntu 20.04 fb52e22af1b0 3 months ago 72.8MB
$ docker history temp:latest
IMAGE CREATED CREATED BY SIZE COMMENT
afed09a38e9e 4 minutes ago /bin/sh -c apt update && rm -rf /var/lib/ap… 0B
fb52e22af1b0 3 months ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 3 months ago /bin/sh -c #(nop) ADD file:d2abf27fe2e8b0b5f… 72.8MB
不看說明書就開始玩遊戲果然是個壞習慣 (掩面) 找個時間來把這份官方文件讀完.
Docker
Written on
November
30th,
2021
by
Borting