一句話結(jié)論废膘,可以在拷貝鏡像文件的時候朽基,通過如下命令指定user來壓縮dockerfile的體積碰酝,避免把指定的文件在dockerfile中計算兩次胀滚。
為什么要指定User趟济?
- 往往,我們會因為安全的要求咽笼,不允許使用root用戶運行程序顷编。
- 像ElasticSearch這個開源組件要求不能用root用戶運行,其實也是出于安全的原因
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計算了兩次媳纬,大小達到了2G多。
優(yōu)化后DockerFile
FROM ttbb/base
COPY --chown=sh:sh testfile /opt/sh/testfile
大小
115b68bc4db8 21 seconds ago 1.51GB
testfile僅計算一次施掏,僅使用1.5G钮惠。