本文主要是介绍写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之前先将权限修改完成后,再拷贝进镜像。
这篇关于写Dockerfile的一个小坑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!