美文网首页系统学习docker
2.7 run vs cmd vs entrypoint

2.7 run vs cmd vs entrypoint

作者: ouchaochao | 来源:发表于2019-08-07 22:44 被阅读0次

    首先明确一下概念:

    run:执行命令并创建新的 image layer
    cmd:设置容器启动后默认执行的命令和参数
    entrypoint:设置容器启动时运行的命令
    

    在介绍cmd和entrypoint之前,先了解一下shell和exec格式:

    • shell:
    FROM centos
    RUN apt-get install -y vim
    ENV name docker
    CMD echo "hello docker"
    ENTRYPOINT echo "hello $name "
    
    • exec
    FROM centos  
    RUN ["apt-get", "install", "-y", "vim"]
    ENV name docker
    CMD ["/bin/echo", "hello docker"]
    ENTRYPOINT ["/bin/bash","-c",  "echo hello $name "]
    
    • build一个docker
    cd somefile
    docker build -t cc/xxx .
    

    CMD

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

    FROM centos
    ENV name docker
    CMD echo "hello $name"
    

    情况一:如果docker run指定了其它命令,CMD命令被忽略

    docker run -it [image] /bin/bsh
    

    情况二:如果定义了多个CMD,只有最后一个执行

    ...
    CMD echo "hello ab"
    CMD echo "hello $name"  # 只执行这个
    

    ENTRYPOINT

    让容器以应用程序或者服务的形式运行
    特点:不会被忽略,一定执行
    最佳实践:写一个shell脚本作为entrypoint

    COPY docker-entrypoint.sh /usr/local/bin
    ENTRYPOINT ["docker-entrypoint.sh"]
    EXPOSE 27017
    CMD ["mongoDB"]
    

    相关文章

      网友评论

        本文标题:2.7 run vs cmd vs entrypoint

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