zoukankan      html  css  js  c++  java
  • Dockerfile的常见命令

    1. FROM

      格式: FROM  <image> 或者  FROM <image>:<tag>

      FROM指令的功能是为后面的指令提供基础镜像,所以该指令一定是Dockerfile的第一个非注释指令。如果FROM指令中没有指明tag,则默认为latest

    2. MAINTAINER

      格式:MAINTAINER <information of maintaier>

      MAINTAINER指明镜像维护者的信息,通常是dockerfile的第二个非注释指令

    3. ENV

      格式:ENV <key> <value> 或者 ENV <key>=<value> ...

      ENV指令为镜像创建出来的容器声明环境变量,并且可以在dockerfile被特定指令使用(ADD,COPY,EXPOSE,WORKDIR等)

      需要注意一点的是,定义容器中的变量的时候尽量不要使用/etc/profile文件,直接使用ENV定义。因为该配置文件只有在交互式启动shell时候才会读取,而docker run使用的是/bin/bash -c,非交互式模式,所以直接写入/etc/profile的环境变量不能直接生效,需要source一遍配置文件,推荐使用ENV直接定义固化。

    4. RUN

      格式:RUN <command> 或者 RUN ["executable","param1","param2"]

      RUN指令会在前一条命令创建的镜像基础上创建一个容器,并在容器中运行命令,在命令结束运行后提交容器为新的镜像

      RUN指令两种运行方式可以理解为shell以及exec格式,当使用shell格式时,命令通过调用/bin/sh -c运行;使用exec格式时,命令直接运行,容易不调用shell,exec格式格式中的参数会被当做JSON被docker解析,exec不会在shell中执行,所以环境变量的参数不会被替换。

    5. COPY/ADD

      格式:ADD/COPY <src> <dest>

      COPY,ADD指令都可以拷贝本地文件或者目录到新的镜像中,其中ADD命令还支持URL并且可以在自动解压tar包。如果原路径是一个目录,则只会拷贝目录中的内容,不会在镜像中创建该目录;源路径是相对于执行build的相对路径;目标路径不存在时会自动创建;

    6. CMD

      格式:有下列三种

      CMD   <command>

      CMD   ["executable","Param1","param2"]

      CMD   ["Param1","param2"]   为ENTRYPOINT传递参数

      CMD指令提供容器启动时运行的默认值,可以为参数,命令。当一个dockerfile文件中存在多个CMD指令时,只有最后一个CMD生效。CMD指令在镜像构建时不运行任何命令,而是在容器启动时默认将CMD指令作为第一条执行的命令,如果用户在docker run命令中指定了命令参数则会覆盖CMD指令中的命令

    7. ENTRYPOINT

      格式:

      ENTRYPOINT   <command>

      ENTRYPOINT   ["executable","Param1","param2"]

      ENTRYPOINT指令与CMD指令类似,不同点在于ENTRYPOINT不会被docker run中的命令参数覆盖

    8. EXPOSE

      格式:EXPOSE [...]

      定义容器向外暴露的窗口,不建议在此处定义端口映射

    镜像构建

        命令:docker build -t <image>:<tag> . 

        上述命令中最后有一个点,表示dockerfile所在的目录,也可以直接写为绝对路径(不推荐),该命令会自动去寻找目录下的Dockerfile文件并读取其内容。也可以使用 -f指明dockerfile文件路径。

        注意:

        1.固定内容尽量写在dockerfile前列,充分利用缓存

        2.RUN指令的命令结合管道可以减少镜像层数

        3.CMD和ENTRYPOINT可以结合使用

        4.如果是本地文件尽量使用COPY

    容器的进入和退出

    进入

    docker exec -it <containerId> /bin/bash

    退出:

      退出并停止容器:exit

      退出不停止容器:Ctrl+q+p

  • 相关阅读:
    Java实现 蓝桥杯 历届试题 连号区间数
    Java实现 蓝桥杯 历届试题 连号区间数
    Java实现 蓝桥杯 历届试题 连号区间数
    Java实现 蓝桥杯 历届试题 连号区间数
    Java实现 蓝桥杯 历届试题 连号区间数
    Java实现 蓝桥杯 历届试题 大臣的旅费
    Java实现 蓝桥杯 历届试题 大臣的旅费
    Java实现 蓝桥杯 历届试题 大臣的旅费
    Java实现 蓝桥杯 历届试题 大臣的旅费
    Navicat查询哪些表有指定字段名
  • 原文地址:https://www.cnblogs.com/feixiangdecainiao/p/10671182.html
Copyright © 2011-2022 走看看