美文网首页
Docker命令CMD ENTRYPOINT

Docker命令CMD ENTRYPOINT

作者: 心水Diana | 来源:发表于2018-12-12 15:04 被阅读0次
    • CMD RUN ENTRYPOINT均有两种方式指定命令,即Shell,Exec
    CMD
    • CMD ["param1","param2"] 为 ENTRYPOINT 提供额外的参数,此时 ENTRYPOINT 必须使用 Exec 格式
    • shell : CMD <命令>
      # Dockerfile  
      CMD echo "hello docker"
      
       # 运行镜像输出
      hello docker
       # 当有多个CMD命令 仅运行最后一个
            # Dockerfile  
            CMD echo "hello docker one"
            CMD echo "hello docker two"
      运行镜像 仅会输出第二个 hello docker two
        ```
      > 命令在底层实际执行过程中调用 `/bin/sh -c <command>`   即 `/bin/sh -c echo "hello docker"`
      
    • exec: CMD ["可执行文件", "参数1", "参数2"...]
       # Dockerfile  
       ENV name docker 
       ENTRYPOINT ["/bin/echo", "Hello, $name"]
       # 输出 Hello, $name
       !!! 没有输出变量 , 因为指令执行时,会直接调用 
       <command>,不会被 shell 解析 ,echo便不能解析变量
       ############################
       ENV name docker 
       ENTRYPOINT ["/bin/sh"," -c ", "echo Hello, $name"]
       # hello docker
      
    ENTRYPOIN
    • Exec 格式:ENTRYPOINT ["executable", "param1", "param2"] 这是 ENTRYPOINT 的推荐格式
      # Dockerfile  
      ENTRYPOINT ["/bin/echo", "Hello"]  
      CMD ["world"]
      #  docker run -it [image] 运行后输出 
      hello world
      # docker run -it [image] "命令行" 运行后输出
      hello 命令行
      

      ENTRYPOINT 的 Exec 格式用于设置要执行的命令及其参数,同时可通过 CMD 提供额外的参数。
      ENTRYPOINT 中的参数始终会被使用,而 CMD 的额外参数可以在容器启动时动态替换掉。

    • Shell:ENTRYPOINT comman
       #  Dockerfile
       ENTRYPOINT echo "ENTRYPOINT  shell"
       运行 镜像输出
       ENTRYPOINT  shell
       #################
       [root@localhost ~]# docker run centos:v6 "cmd"
       ENTRYPOINT  shell
      

      ENTRYPOINT 的 Shell 格式会忽略任何 CMD 或 docker run 提供的参数

    相关文章

      网友评论

          本文标题:Docker命令CMD ENTRYPOINT

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