一句話結(jié)論,可以在拷貝鏡像文件的時(shí)候,通過如下命令指定user來壓縮dockerfile的體積,避免把指定的文件在dockerfile中計(jì)算兩次。
為什么要指定User?
- 往往,我們會(huì)因?yàn)榘踩囊?,不允許使用root用戶運(yùn)行程序。
- 像ElasticSearch這個(gè)開源組件要求不能用root用戶運(yùn)行,其實(shí)也是出于安全的原因
COPY --chown=sh:sh source /opt/sh
效果展示
先使用dd命令創(chuàng)建1GB的測試文件
dd if=/dev/zero of=testfile bs=1024 count=1048576
測試基礎(chǔ)鏡像ttbb/base:latest,大小439MB
docker images|grep 'ttbb/base'|grep latest
ttbb/base latest bacdb9e7b5f4 2 weeks ago 439MB
優(yōu)化前DockerFile
FROM ttbb/base
COPY testfile /opt/sh/testfile
RUN chown -R sh:sh /opt/sh/testfile
大小
1280d315e09d 31 seconds ago 2.59GB
可以看到testfile計(jì)算了兩次,大小達(dá)到了2G多。
優(yōu)化后DockerFile
FROM ttbb/base
COPY --chown=sh:sh testfile /opt/sh/testfile
大小
115b68bc4db8 21 seconds ago 1.51GB
testfile僅計(jì)算一次,僅使用1.5G。