写Dockerfile的一个小坑

下面是是一个简单的Dockerfile。

FROM centos
ENV LANG en_US.UTF-8
ENV TZ Asia/ShanghaiCOPY softs/jdk1.8.0_161 /opt/RUN set -ex && \
rm /bin/sh && \
ln -sv /bin/bash /bin/sh && \
chmod -R +x /optENV JAVA_HOME /opt/jdk1.8.0_161
ENV CLASSPATH .:$JAVA_HOME/lib/tools.jar:/lib.dt.jar
ENV PATH $JAVA_HOME/bin:$PATH

基础镜像200M + JDK 100M。但总的镜像大小确实400+M,这个为啥呢?
其实这里有个小坑需要注意,就是Dockerfile的分层设计,我们都知道Dockerfile中每行语句都会生成一个新的Dockerfile分层,上一层变为只读(read only)。那么

chmod -R +x /opt

这行是一个递归的修改权限,他会将上面COPY的内容,复制到这层,并修改权限。所以,这里建议大家在COPY之前先将权限修改完成后,再拷贝进镜像。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部