Docker:理解入口点和CMD指令

Docker:理解入口点和CMD指令,docker,Docker,我想问一些关于Dockerfile中可用的ENTRYPOINT和CMD说明的问题 假设我正在使用fig或docker compose将本地目录作为卷装载到容器中。什么时候执行ENTRYPOINT和CMD指令? 卷装入之后还是之前 如果我将bash脚本传递给ENTRYPOINT,是否会在每次启动容器时执行此脚本 如果有一个bash脚本被添加为ENTRYPOINT,那么使用docker run或docker exec执行的所有命令是否都会作为参数传递到此脚本 什么时候执行CMD安装?启动容器并装

我想问一些关于Dockerfile中可用的
ENTRYPOINT
CMD
说明的问题

  • 假设我正在使用
    fig
    docker compose
    将本地目录作为卷装载到容器中。什么时候执行
    ENTRYPOINT
    CMD
    指令?
    • 卷装入之后还是之前
  • 如果我将bash脚本传递给
    ENTRYPOINT
    ,是否会在每次启动容器时执行此脚本
  • 如果有一个bash脚本被添加为
    ENTRYPOINT
    ,那么使用
    docker run
    docker exec
    执行的所有命令是否都会作为参数传递到此脚本
  • 什么时候执行
    CMD
    安装?启动容器并装入卷后
  • 为什么Dockerfile中只能有一个
    CMD
    ?如果我想启动一个包含多个进程/运行多个可测试项的容器,该怎么办 1) ENTRYPOINT和CMD将按照它们在Dockerfile中出现的顺序执行,而不管卷装载情况如何

    2) 如果您有一个启动谓词的入口点,则可以传递一个参数

    3) docker run是的,但一些示例可能会澄清这一点,docker exec只是让您进入容器

    4) CMD在启动容器时执行

    5) 您可以在Dockerfile中使用多个CMD,但只能使用最后一个,docker设计为运行一个进程


    如果要运行多个,则需要一些工具,如supervisor或runit或s6或daemontools,请参阅


    由于CMD很容易被重写,而不是ENTRYPOINT(除非您
    docker run--ENTRYPOINT
    ),通常您在Dockerfile中将ENTRYPOINT作为最后一行,并将CMD作为最后一行,实际上是可以更改的参数。ENTRYPOINT和CMD按照它们在Dockerfile中出现的顺序执行,无论卷装载如何2)如果您有一个入口点启动一个动词,您可以为
    docker run
    传递一个参数3)yes,但一些示例可能会澄清这一点,并且
    docker exec
    只是让您进入容器4)启动容器时执行CMD 5)您可以在docker文件中使用多个CMD,但只会使用最后一个,docker设计为运行一个进程,如果要运行多个进程,则需要一些工具,如supervisor或runit或s6或daemontools,因为CMD很容易被覆盖,而不是ENTRYPOINT(除非您
    docker run--entrypoint…
    通常在Dockerfile中将entrypoint作为最后一行,并将CMD作为最后一行,实际上是参数,可以change@user2915097我建议你把你所有的评论都写进一个答案——如果你想在一个容器运行时开始多件事情的话,只需要一点(不是一个好主意)您可以使用脚本,将其添加到容器中,然后将其用作CMD。