Dokerfile的语法梳理
FROM
- FROM 自定义的名称:制作base image
- FROM 官方image名:使用base image
尽量使用官方image,保证安全
LABEL
定义了image的一些基本信息,必须要有帮助信息(Metadata)
类似于代码的注释
RUN
在安装软件时经常使用
复杂的RUN使用你反斜线换行
避免无用分层,合并多条命令为一行
WORKDIR
设定当前工作目录
类似于cd与mkdir的组合
取代RUN cd
尽量使用绝对目录
ADD and COPY
ADD和COPY可以把文件添加到指定目录
ADD还可以在添加到指定目录后并且解压
大部分情况使用COPY
远程目录使用crul或者wget
ENV
设置常量,增加系统可维护性
VOLUME and EXPOSE
存储和网络
CMD and ENTRYPOINT
CMD
容器启动时默认执行的命令
如果docker run指定了其他命令,CMD命令被忽略
定义多个CMD,只有最后一个会执行
ENTRYPOINT
让容器以应用程序或服务的形式运行
不会被忽略,一定会执行
最佳实践:写一个shell脚本作为entrypoint