DockerFile语法梳理(会持续更新完善)

为了方便日后查阅总结,做下语法记录。

FROM

FROM centos #尽量使用官方的base images

LABEL

label很重要,就像要写注释。Metadata不可少。

LABEL maintainer='linshangqing'
LABEL version="1.0"
LABEL description="This is description"

RUN

大部分是用来安装软件。每运行一次RUN,在Images就会制造新的layer。
注意:为了避免无用分层,合并多条命令成一行。

RUN yum update && yun instal -y vim\
    python-dev 
    
#通过&&合并成一行;\反斜线换行

WORKDIR

设定当前工作目录。
注意:
1.尽量使用绝对目录。
2.用WORKDIR,不要使用RUN CD

WORKDIR /test   #如果没有则会创建test目录
WORKDIR demo 
RUN pwd         #输出的则是/test/demo

ADD and COPY

都是把本地的文件添加docker iamge里面

ADD和COPY的区别:ADD还可以解压缩

联合使用的情况 hellow的目录情况
WORKDIR /root
ADD hello test/     # /root/test/hello

添加远程文件/目录,请使用curl或者wget

ENV

设置环境变量或常量(尽量使用ENV可增加可维护性)

ENV MYSQL_VERSION 5.6   #设置常量
RUN apt-get install -y mysql-server="${MYSQL_VERSION}" \
    && rm -rf /var/lib/apt/lists/*  #引用常量

VOLUME and EXPOSE

存储和网络
EXPOSE:暴露端口

CMD

1.容器启动时默认执行的命令
2.如果doker run指定了其他的命令,CMD会被忽略
3.如果定义了多个CMD,只有最后一个会执行

示例:

FROM centos
ENV name Docker
CMD echo "hello $name"
docker run [image]输出会是什么?是hello Docker
Docker run -it [image] /bin/bash 输出?则CMD会被忽略

ENTRYPOINT

1.让容器以应用程序或者服务的形式进行
2.不会被忽略,一定会执行

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容