诸如以下命令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形式通常用于运行命令。
可执行形式:
【Docker命令RUN、CMD和ENTRYPOINT之间的区别】命令的可执行形式通常用于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 run命令(例如” bash” )一起使用, 它将简单地打开bash并且不回显任何内容。
文章图片
输出如下
3.入口点命令
An入口点命令, 不像CMD, 不会忽略你在Docker run命令中指定的其他参数。
考虑下面的示例:
ENTRYPOINT ["echo", "srcmini "]
CMD ["Docker Tutorials"]
例如, 如果docker文件is
文章图片
输入
在没有任何其他参数的情况下, 运行Docker容器时上述命令的输出为–
srcmini Docker Tutorials
文章图片
输出如下
如果你指定其他参数, 则CMD参数被忽略。
总而言之, 在本文中, 我们讨论了用于执行的shell和可执行文件形式docker文件说明。然后, 我们讨论了运行, CMD和入口点命令每个示例。
推荐阅读
- Java中Scanner和BufferReader类之间的区别
- 可路由和不可路由协议之间的区别
- C#中Ref和Out关键字之间的区别
- C#中的readonly和const关键字之间的区别
- RDBMS和ORDBMS之间有哪些区别()
- GCC内联汇编常见陷阱
- #yyds干货盘点#存储结构与磁盘划分
- ARM64的函数调用标准和栈布局
- #yyds干货盘点#Linux文件系统与数据