📅  最后修改于: 2023-12-03 14:47:10.032000             🧑  作者: Mango
在Dockerfile中,我们可以使用RUN、CMD和ENTRYPOINT命令来执行不同类型的操作。在本文中,我们将详细介绍这些命令之间的区别。
RUN命令用于在Docker镜像构建过程中执行命令。它以当前镜像为基础,在新的镜像中运行命令并提交结果,常常用于安装软件包和依赖项。 语法:
RUN <command>
示例:
FROM ubuntu:latest
RUN apt-get update && apt-get install -y curl
解释:该Dockerfile从Ubuntu镜像开始新的构建,然后使用RUN命令安装curl软件包。
CMD命令用于指定Docker容器启动时应运行的默认命令。如果Dockerfile中已经有CMD,则使用最后一个CMD,因为只能有一个CMD。 语法:
CMD ["executable","param1","param2"]
示例:
FROM ubuntu:latest
CMD ["echo","Hello, World!"]
解释:该Dockerfile从Ubuntu镜像开始新的构建,然后使用CMD命令定义默认命令为打印"Hello, World!"。
ENTRYPOINT命令类似于CMD命令,它用于定义容器启动时要运行的命令。不同之处是,ENTRYPOINT命令不可被覆盖。如果在docker启动容器时提供的命令与ENTRYPOINT命令不匹配,则会将用户提供的命令作为ENTRYPOINT命令的参数。 语法:
ENTRYPOINT ["executable","param1","param2"]
示例:
FROM ubuntu:latest
ENTRYPOINT ["echo"]
CMD ["Hello, World!"]
解释:该Dockerfile从Ubuntu镜像开始新的构建,使用ENTRYPOINT定义默认命令为"echo"。CMD命令是可选的,用于传递默认参数。当使用此Docker映像创建容器时,在运行容器时可以提供其他要打印的消息,如:docker run <image-name> Hello, Docker!
。