个性化阅读
专注于IT技术分析

Docker命令RUN、CMD和ENTRYPOINT之间的区别

诸如以下命令CMD, 运行和入口点当你编写一个docker文件创建Docker映像。但是, 如果你刚开始使用Docker或没有足够的动手经验来使用这些命令, 那么这些命令可能会给你带来很多混乱。在本文中, 我们将通过实际示例深入讨论所有这三个命令。

但是在深入解释之前, 我们需要首先了解不同的执行形式。我们可以使用两种不同的形式在Docker中执行命令.

 Shell形式:

如果我们选择命令的Shell形式执行, 则会进行常规的Shell处理。在幕后, bash称/ bin/sh -c。 Shell命令的一般形式如下所示:

<Instruction> <Command>

要获得更清晰的图片, 请查看以下命令。

RUN apt-get -y install firefox
CMD echo "srcmini"
ENTRYPOINT echo "srcmini"

以上两个命令都输出” srcmini”。执行命令的Shell形式通常用于运行命令。

 可执行形式:

命令的可执行形式通常用于CMD和入口点命令。可执行命令的一般形式如下所示:

<Instruction> ["executable", "parameter no. 1", "parameter no. 2", ...]

使用命令的可执行形式可以直接执行命令, 并且不会进行Shell处理。查看以下命令:

ENTRYPOINT ["/bin/echo", "srcmini"]
CMD ["/bin/echo", "srcmini"]

现在, 让我们尝试了解运行, CMD和入口点命令深入。

1.运行命令:

当你使用运行在你的命令docker文件, 它总是在以前的图像之上创建一个新的中间图像层。因此, 始终建议将所有运行命令一起。

运行 可执行形式的命令为:

RUN ["apt-get", "install", "firefox"]

Shell形式的RUN命令是:

RUN apt-get -y install firefox

2.CMD命令

一种CMD命令用于设置运行Docker容器后将执行的默认命令。如果你在Docker run命令中提供命令, 则CMD自变量被忽略dockerfile。在多个的情况下CMD命令, 只有最后一个被执行。

CMD ["python3", "app.py"]

如果你使用的是入口点在你的docker文件, 你可以使用添加其他参数CMD命令的以下形式。

CMD ["parameter 1", "parameter 2"]

请注意CMD如果在Docker run命令中提供参数, 则会忽略这些命令。

sudo docker run -it ubuntu bash

如果你同时使用上述命令, 则使用了CMD在你的命令docker文件, 它将被忽略, 仅打开bash。

例如, 如果docker文件包含:

docker文件

输入文件

如果我们将其他参数与docker run命令(例如” bash”)一起使用, 它将简单地打开bash并且不回显任何内容。

output

输出如下

3.入口点命令

An入口点命令, 不像CMD, 不会忽略你在Docker run命令中指定的其他参数。

考虑下面的示例:

ENTRYPOINT ["echo", "srcmini "]
CMD ["Docker Tutorials"]

例如, 如果docker文件is

docker文件

输入

在没有任何其他参数的情况下, 运行Docker容器时上述命令的输出为–

srcmini Docker Tutorials
output

输出如下

如果你指定其他参数, 则CMD参数被忽略。

总而言之, 在本文中, 我们讨论了用于执行的shell和可执行文件形式docker文件说明。然后, 我们讨论了运行, CMD和入口点命令每个示例。


赞(0) 打赏
未经允许不得转载:srcmini » Docker命令RUN、CMD和ENTRYPOINT之间的区别
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏