Dockefile语法梳理和实践
参考官方文档:https://docs.docker.com/reference/
1.From
From scratch #制作base image
From centos #使用base image 来构建自己的image
技巧:尽量使用已有的资源,使用官方的image来构建自己的image,原因很简单:安全
2.Label
LABEL maintainer = "xiao"
LABEL version = 1.0
LABEL description = ""
技巧:作为image的注释必不可少,让人能够了解image的基本情况,值得注释
3.Run
RUN yum update && yum install -y vim \
python-dev #反斜杠换行
技巧:因为每次run对于image来说都会认为是新的分层,所以对于run来讲为了避免无用分层合并多条命令成一行(使用&&符号来合并两条命令),为了防止一行过长,用反斜杠()来进行换行,增加美观程度。
4.WORKDIR
设定当前工作目录
WORKDIR /test #如果没有会自动创建test目录
技巧:用WORKDIR尽量不要用RUN cd 虽然也能实现目的,尽量使用绝对目录!
5.add 和 copy
WORKDIR /root
ADD hello test/ #/root/test/hello
#等同于
WORKDIR /root
copy hello test/
add和copy的区别体现在
ADD test.tar.gz #会自动解压
技巧:大部分情况下使用copy优与ADD,add除了copy还有别的功能(如解压),添加远程目录或文件一般使用curl或wget
6.env
ENV aaa 5#设置常量
技巧:使用env来增加dockfile的可维护性
7.VOLUME 和EXPOSE
8.RUN CMD ENTRYPOINT
RUN:执行命令并创建新的image layer
CMD:设置容器启动后默认执行的命令和参数
ENTRYPOINT:设置容器启动时运行的命令
这三种参数有两种格式:shell格式和exec格式,个人偏好使用shell格式
ENTRYPOINT echo “hello”