当我们创建Docker镜像时,需要在Dockerfile中定义一些命令来构建和运行容器。其中,CMD和ENTRYPOINT是两个非常重要的命令。
CMD 命令
CMD命令用于指定容器启动时所要运行的命令。它会被写在Dockerfile的最后一行, 并且只有最后一个CMD命令会被执行。在docker run时运行的命令将覆盖CMD。
语法格式
CMD ["executable","param1","param2"]
executable
:要运行的命令或可执行文件。可以是可执行文件名或一个可以执行的shell命令。param1,param2
:命令所需的参数,可选。
示例:
FROM ubuntu
CMD ["echo", "Hello Docker!"]
构建Docker镜像,并运行容器:
$ docker build -t myimage .
$ docker run myimage
输出:
Hello Docker!
ENTRYPOINT 命令
ENTRYPOINT命令也用于指定容器启动时所要运行的命令。但不同于CMD命令,它指定的命令不会被docker run时的命令覆盖,而是作为容器启动时的默认命令。
语法格式
ENTRYPOINT ["executable","param1","param2"]
executable
:要运行的命令或可执行文件。可以是可执行文件名或一个可以执行的shell命令。param1,param2
:命令所需的参数,可选。
示例:
FROM ubuntu
ENTRYPOINT ["echo", "Hello"]
CMD ["Docker!"]
构建Docker镜像,并运行容器:
$ docker build -t myimage .
$ docker run myimage
输出:
Hello Docker!
可以看到,在运行容器时并没有指定运行的命令,而是执行了ENTRYPOINT指定的默认命令。
如果我们在运行容器时指定了一个命令,它会覆盖CMD命令,而不会替换ENTRYPOINT命令。
例如,运行命令:
$ docker run myimage "Goodbye"
输出:
Hello Goodbye
以上就是关于CMD和ENTRYPOINT命令的详细解析,希望能帮助你更加深入地理解Dockerfile的使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Dockerfile中CMD和ENTRYPOINT命令详解 - Python技术站