CMD和ENTRYPOINT区别

  1. ENTRYPOINT 简介
          ENTRYPOINT 容器启动后执行的命令,让容器执行表现的像一个可执行程序一样,与CMD 的 区 别 是 不 可 以 被 docker run 覆 盖 , 会 把 docker run 后 面 的 参 数 当 作 传 递 给
    ENTRYPOINT 指令的参数。
          Dockerfile 中只能指定一个 ENTRYPOINT,如果指定了很多,只 有 最 后 一 个 有 效 。 docker run 命 令 的 -entrypoint 参 数 可 以 把 指 定 的 参 数 继 续 传 递 给ENTRYPOINT
    clipboard.png
  2. CMD简介
    clipboard.png
  3. 案例(下面基于centos这个基础镜像构建一个镜像测试CMD命令)
    1)在/opt/dockerfile目录下创建一个Dockerfile文件
            
         
    #基于我们从阿里云下载下来的centos基础镜像
    FROM centos
    
    CMD ["/bin/echo","this is test cmd"]

         
    2)使用dockerfile构建镜像
           命令:docker build -f /opt/dockerfile/mydockerfile-test -t cmdtest:v1.0 .

    3)启动刚刚创建的镜像
          命令:docker run -it 镜像id
         
           可以看到,/bin/echo This is test cmd 这条命令成功执行.
           直接进入container里面,而不执行echo指令,可以在docker run 后面直接加上/bin/bash命令,/bin/bash命令会覆盖掉cmd后面的命令。
           
           /bin/bash 命令覆盖掉了dockerfile中的cmd命令,直接进入到了container中。
  4. 案例(下面基于centos这个基础镜像构建一个镜像测试ENTRYPOINT命令)
    1)在/opt/dockerfile目录下创建一个Dockerfile文件
        
       
    #基于我们从阿里云下载下来的centos基础镜像
    FROM centos
    
    ENTRYPOINT ["/bin/echo","this is test entrypoint"]

    2)使用dockerfile构建镜像
          
    3)启动刚刚创建的镜像
          a: 直接在docker run 后面加参数/bin/bash,entrypoint会把/bin/bash当成一个echo的字符串参数,不会进入到容器中。
               
          b: 如果想覆盖dockerfile中entrypoint指令,可以在docker run命令中加--entrypoint参数来指定。
             
              可以发现不打印上面的内容了,直接进入容器
          c:直接启动容器
             
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值