写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的一个小坑的主要内容,如果未能解决你的问题,请参考以下文章

今天写测试代码时遇到的小坑

[tf] tensorflow中dropout小坑记录

关于sniff函数的一个小坑

post到https的一个小坑

记一个C系语言中数值类型变量隐式转换的小坑

记一个C系语言中数值类型变量隐式转换的小坑