当前位置:实例文章 » 其他实例» [文章]DevOps系列文章 之 Dockerfile的 CMD 与 ENTRYPOINT 命令区别

DevOps系列文章 之 Dockerfile的 CMD 与 ENTRYPOINT 命令区别

发布人:shili8 发布时间:2025-01-10 00:11 阅读次数:0

**DevOps系列文章之Dockerfile的CMD与ENTRYPOINT命令区别**

在Docker的世界中,`CMD`和`ENTRYPOINT`是两个非常重要的命令,它们决定了容器启动后执行什么命令。虽然这两个命令看起来很相似,但它们有着不同的用途和作用。

**CMD命令**

`CMD`命令用于指定容器启动后要执行的命令。如果你在Dockerfile中使用了`CMD`命令,那么当你运行`docker run`命令时,会将该命令作为参数传递给容器内的进程。例如:

dockerfileFROM python:3.9-slim# Set the working directory to /appWORKDIR /app# Copy the current directory contents into the container at /appCOPY . /app# Install any needed packages (e.g., requirements.txt)
RUN pip install --no-cache-dir flask# Make port80 available to the world outside this containerEXPOSE80# Define environment variableENV NAME World# Run app.py when the container launchesCMD ["python", "app.py"]


在上面的例子中,`CMD`命令指定了容器启动后要执行的命令是`python app.py`。当你运行`docker run`命令时,这个命令会被传递给容器内的进程。

**ENTRYPOINT命令**

`ENTRYPOINT`命令用于指定容器启动后要执行的命令。如果你在Dockerfile中使用了`ENTRYPOINT`命令,那么当你运行`docker run`命令时,会将该命令作为参数传递给容器内的进程。例如:

dockerfileFROM python:3.9-slim# Set the working directory to /appWORKDIR /app# Copy the current directory contents into the container at /appCOPY . /app# Install any needed packages (e.g., requirements.txt)
RUN pip install --no-cache-dir flask# Make port80 available to the world outside this containerEXPOSE80# Define environment variableENV NAME World# Run app.py when the container launchesENTRYPOINT ["python", "app.py"]


在上面的例子中,`ENTRYPOINT`命令指定了容器启动后要执行的命令是`python app.py`。当你运行`docker run`命令时,这个命令会被传递给容器内的进程。

**CMD与ENTRYPOINT区别**

虽然`CMD`和`ENTRYPOINT`看起来很相似,但它们有着不同的用途和作用:

* `CMD`用于指定容器启动后要执行的命令。如果你在Dockerfile中使用了`CMD`命令,那么当你运行`docker run`命令时,会将该命令作为参数传递给容器内的进程。
* `ENTRYPOINT`用于指定容器启动后要执行的命令。如果你在Dockerfile中使用了`ENTRYPOINT`命令,那么当你运行`docker run`命令时,会将该命令作为参数传递给容器内的进程。

**CMD与ENTRYPOINT的区别示例**

dockerfileFROM python:3.9-slim# Set the working directory to /appWORKDIR /app# Copy the current directory contents into the container at /appCOPY . /app# Install any needed packages (e.g., requirements.txt)
RUN pip install --no-cache-dir flask# Make port80 available to the world outside this containerEXPOSE80# Define environment variableENV NAME World# Run app.py when the container launchesCMD ["python", "app.py"]

# Run another command when the container launchesENTRYPOINT ["python", "another_app.py"]


在上面的例子中,`CMD`命令指定了容器启动后要执行的命令是`python app.py`,而`ENTRYPOINT`命令指定了容器启动后要执行的命令是`python another_app.py`。当你运行`docker run`命令时,这两个命令会被传递给容器内的进程。

**CMD与ENTRYPOINT的区别示例**

bash$ docker build -t myapp .
$ docker run -it --rm myapp python app.py


在上面的例子中,`docker run`命令将`python app.py`作为参数传递给容器内的进程。

bash$ docker build -t myapp .
$ docker run -it --rm myapp python another_app.py


在上面的例子中,`docker run`命令将`python another_app.py`作为参数传递给容器内的进程。

**结论**

虽然`CMD`和`ENTRYPOINT`看起来很相似,但它们有着不同的用途和作用。`CMD`用于指定容器启动后要执行的命令,而`ENTRYPOINT`用于指定容器启动后要执行的命令。如果你在Dockerfile中使用了`CMD`命令,那么当你运行`docker run`命令时,会将该命令作为参数传递给容器内的进程。同样,如果你在Dockerfile中使用了`ENTRYPOINT`命令,那么当你运行`docker run`命令时,会将该命令作为参数传递给容器内的进程。

**参考**

* Docker官方文档: />* Docker CMD和ENTRYPOINT命令区别:

相关标签:运维devops
其他信息

其他资源

Top