zoukankan      html  css  js  c++  java
  • Dockerfile语法

    github上有docker-library:       

    https://github.com/docker-library

    一、FROM

    1、从头开始创建镜像:

    FROM scratch

    2、基于某个镜像开始创建镜像:

    FROM ubuntu:14.04
    FROM centos

    3、备注:最好使用官方的image作为base image,这样安全性高

    二、LABEL(可以看做是注释)

    案例:

    LABEL version="1.0"
    LABEL description="This is description"

    三、RUN(执行命令并创建新的 Image Layer)

    1、案例:

    RUN yum update && yum install -y vim 
    python-dev   #反斜线换行

    2、备注:

    每一个RUN会创建一层新的container,所以最好使用&&合并多条命令,使用反斜线进行换行

    四、WORKDIR(类似linux的cd)

    1、案例:

    WORKDIR /test  #如果没有该目录会自动创建
    WORKDIR demo
    RUN pwd           #输出结果为/test/demo

    2、备注:

    1)使用WORKDIR,不要用RUN cd
    2) 尽量使用绝对目录

    五、ADD  and  COPY(把本地文件添加到镜像中)

    1、案例:

    ADD hello /
    WORKDIR /root
    ADD hello test/   #/root/test/hello
    
    WORKDIR /root
    COPY hello test/

    2、ADD和COPY的区别:

    ADD test.tar.gz / #ADD添加到根目录并且解压

     3、备注:

    1) 大部分情况下,COPY优于ADD
    2) ADD除了COPY功能外还有解压功能
    3) 添加远程文件/目录请使用curl或者wget

    六、ENV(设置常量)

    1、案例:

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

    2、备注:尽量使用ENV增加可维护性

    七、CMD &&  ENTRYPOINT

    1、CMD (设置容器启动后默认执行的命令和参数)

    1)容器启动时默认执行的命令

    2)如果docker run指定了其他命令,CMD命令被忽略

    3)如果定义了多个CMD,只有最后一个会执行

    2、ENTRYPOINT(设置容器启动时运行的命令)

    1)让容器以应用程序或服务的形式运行

    2)不会被忽略,一定会执行

    3、CMD配合ENTRYPOINT

    1) 案例:

    FROM ubuntu:14.04
    RUN apt-get update && apt-get install -y stress
    ENTRYPOINT ["/usr/bin/stress"]
    CMD []

    2) 说明:这里的CMD [] 用于接收/usr/bin/stress的参数

  • 相关阅读:
    浅谈JavaScript中forEach与each
    Angular.js中使用$watch监听模型变化
    整理:Javascript获取数组中的最大值和最小值的方法汇总
    自定义指令的参数
    ng-disabled 不起作用的解决办法
    理解Angular中的$apply()以及$digest()
    $q -- AngularJS中的服务(理解)
    正则表达式30分钟入门教程(转)
    angular.extend用法实例
    使用angular.bootstrap() 完成模块的手动加载
  • 原文地址:https://www.cnblogs.com/zhengchuzhou/p/9792278.html
Copyright © 2011-2022 走看看