写Dockerfile的一个小坑
Posted 柳清风09
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了写Dockerfile的一个小坑相关的知识,希望对你有一定的参考价值。
下面是是一个简单的Dockerfile。
FROM centos
ENV LANG en_US.UTF-8
ENV TZ Asia/Shanghai
COPY softs/jdk1.8.0_161 /opt/
RUN set -ex && \\
rm /bin/sh && \\
ln -sv /bin/bash /bin/sh && \\
chmod -R +x /opt
ENV 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的一个小坑的主要内容,如果未能解决你的问题,请参考以下文章