美文网首页Docker容器
DockerFile语法梳理(会持续更新完善)

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

作者: 猪大圣三七 | 来源:发表于2020-03-21 01:44 被阅读0次
    为了方便日后查阅总结,做下语法记录。

    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.不会被忽略,一定会执行

    相关文章

      网友评论

        本文标题:DockerFile语法梳理(会持续更新完善)

        本文链接:https://www.haomeiwen.com/subject/inueyhtx.html