首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Dockerfile中CMD与ENTRYPOINT命令的区别

Dockerfile中CMD与ENTRYPOINT命令的区别

作者头像
YP小站
发布于 2021-11-26 02:31:45
发布于 2021-11-26 02:31:45
4.7K01
代码可运行
举报
文章被收录于专栏:YP小站YP小站
运行总次数:1
代码可运行

CMD与ENTRYPOINT区别

  • CMD命令设置容器启动后默认执行的命令及其参数,但CMD设置的命令能够被docker run命令后面的命令行参数替换
  • ENTRYPOINT配置容器启动时的执行命令(不会被忽略,一定会被执行,即使运行 docker run时指定了其他命令)
  • ENTRYPOINT 的 Exec 格式用于设置容器启动时要执行的命令及其参数,同时可通过CMD命令或者命令行参数提供额外的参数
  • ENTRYPOINT 中的参数始终会被使用,这是与CMD命令不同的一点

1. Shell格式和Exec格式命令

Shell格式指令 <command>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CMD java -jar test.jar

Exec格式指令 ["executable", "param1", "param2", ...]

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ENTRYPOINT  ["java", "-jar", "test.jar"]

2. Shell格式和Exec格式命令的区别

  • Shell格式中的命令会直接被Shell解析
  • Exec格式不会直接解析,需要加参数

3. CMD和ENTRYPOINT指令支持的命令格式

CMD 指令的命令支持以下三种格式:

  • Exec格式: CMD ["executable","param1","param2"]
  • Exec参数: CMD ["param1","param2"] 用来为ENTRYPOINT 提供参数
  • Shell格式: CMD command param1 param2

ENTRYPOINT 指令的命令支持以下了两种格式:

  • Exec格式:可用使用CMD的参数和可使用docker run [image] 参数 后面追加的参数
  • Shell格式 :不会使用 CMD参数,可使用docker run [image] 参数 后面追加的参数

4. 示例

ENTRYPOINT的Exec格式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Dockerfile
FROM centos
ENTRYPOINT ["/bin/echo", "Hello"]

# 启动容器的命令: docker run -it [image]
# 输出: Hello
# 启动容器的命令: docker run -it [image] Test
# 输出: Hello Test

ENTRYPOINT的Exec格式 + CMD的Exec格式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Dockerfile
FROM centos
ENTRYPOINT ["/bin/echo", "Hello"]
CMD ["Word"]

# 启动容器的命令: docker run -it [image]
# 输出: Hello Word
# 启动容器的命令: docker run -it [image] Test
# 输出: Hello Test

ENTRYPOINT的Exec格式 + CMD的shell格式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Dockerfile
FROM centos
ENTRYPOINT ["/bin/echo", "Hello"]
CMD Word

# 启动容器的命令: docker run -it [image]
# 输出: Hello /bin/sh -c Word
# 启动容器的命令: docker run -it [image] Test
# 输出: Hello Test

ENTRYPOINT的shell格式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Dockerfile
FROM centos
ENTRYPOINT /bin/echo "Hello"

# 启动容器的命令: docker run -it [image]
# 输出: Hello
# 启动容器的命令: docker run -it [image] Test
# 输出: Hello

ENTRYPOINT的shell格式 + CMD的Shell格式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Dockerfile
FROM centos
ENTRYPOINT /bin/echo "Hello"
CMD Word

# 启动容器的命令: docker run -it [image]
# 输出: Hello
# 启动容器的命令: docker run -it [image] Test
# 输出: Hello

ENTRYPOINT的shell格式 +CMD的Exec格式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Dockerfile
FROM centos
ENTRYPOINT /bin/echo "Hello"
CMD ["Word"]

# 启动容器的命令: docker run -it [image]
# 输出: Hello
# 启动容器的命令: docker run -it [image] Test
# 输出: Hello

参考链接

https://blog.csdn.net/weixin_42971363/article/details/91506844

原文出处:https://gitbook.curiouser.top/origin/docker-Dockerfile%E4%B8%ADCMD%E4%B8%8EENTRYPOINT%E5%91%BD%E4%BB%A4%E7%9A%84%E5%8C%BA%E5%88%AB.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 YP小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
dockerfile (・ω・)ノ
构建镜像有docker commit和docker file两种,而docker file是现在使用最主要的方式,这里记录下docker file的基础指令
LoRexxar
2023/02/20
2320
Dockerfile格式以及Dockerfile示例
笔记内容:Dockerfile格式以及Dockerfile示例 笔记日期:2018-02-07
端碗吹水
2022/01/12
1.1K0
Dockerfile自作镜像
Dockerfile的指令是忽略大小写的,建议使用大写,使用 # 作为注释,每一行只支持一条指令,每条指令可以携带多个参数。 Dockerfile的指令根据作用可以分为两种,构建指令和设置指令。 构建指令用于构建image,其指定的操作不会在运行image的容器上执行; 设置指令用于设置image的属性,其指定的操作将在运行image的容器中执行。
@凌晨
2020/05/28
7600
Dockerfile自作镜像
Dockerfile 的 RUN 和 CMD、ENTRYPOINT
在创建Dockerfile的时候,RUN和CMD都是很重要的命令。它们各自的作用分别如下:
一个会写诗的程序员
2021/03/02
13.4K0
Docker RUN vs CMD vs ENTRYPOINT
在 Dockerfile 中,RUN、CMD 和 ENTRYPOINT 这三条指令看起来相似,它们的作用都是在 Docker 镜像构建过程中运行指定的命令。有时候很容易造成混淆,接下来我们来详细探讨它们之间的区别。
写bug的高哈哈
2024/11/07
2281
Docker RUN vs CMD vs ENTRYPOINT
Dockerfile 指令
1、Dockerfile基本结构 Dockerfile由一行行命令语句组成,并且支持以#开头的注释行。
小手冰凉
2020/08/06
5490
Dockerfile 指令
Dockerfile
Docker镜像可以通过Docker hub仓库中获取,这些镜像是由官方或者社区人员提供的,对于Docker用户来说并不能满足我们的需求,但是从无开始构建镜像成本大。常用的数据库、中间件、应用软件等都有现成的Docker官方镜像或社区创建的镜像,我们只需要稍作配置就可以直接使用。
Alone-林
2023/03/17
1K1
Dockerfile
Docker系列教程07-Dockerfile指令详解
Dockerfile有十多个指令。本节我们来系统讲解这些指令,指令的一般格式为 指令名称参数。 ADD 复制文件 ADD指令用于复制文件,格式为: ADD<src>...<dest> ADD["<src>",..."<dest>"] 从src目录复制文件到容器的dest。其中src可以是Dockerfile所在目录的相对路径,也可以是一个URL,还可以是一个压缩包 注意: ① src必须在构建的上下文内,不能使用例如: ADD../somethine/something 这样的命令,因为 docker bu
用户1516716
2018/04/03
9550
Dockerfile中执行命令的几种方式
Dockerfile 是用于构建 Docker 镜像的文本文件,提供了一系列构建指令和配置,用于自动化和标准化 Docker 镜像的构建流程。一个 Dockerfile 可以通过依次执行每行命令来创建一个新的 Docker 镜像。因此,执行命令与 Dockerfile 的编写和构建密不可分。
windealli
2023/10/28
4.6K0
Dockerfile中执行命令的几种方式
Docker配置文件Dockerfile详解
image.png Dockerfile是用来创建新镜像的配置文件,和部署配置文件概念类似,例如 ant,通过执行一系列的指令来完成任务 Dockerfile分为四部分: (1)基础镜像信息 (2)维护者信息 (3)镜像操作指令 (4)容器启动时执行指令 示例 FROM ubuntu MAINTAINER docker_user docker_user@email.com RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe
dys
2018/04/02
1.9K0
Docker配置文件Dockerfile详解
Docker 使用指南 (五)—— Dockerfile 详解
本文介绍了如何使用 Dockerfile 构建镜像并运行容器,包括 FROM、MAINTAINER、RUN、WORKDIR、EXPOSE、ENV、COPY、ENTRYPOINT 和 CMD 等关键字。
田飞雨
2016/07/20
7.9K0
Docker 使用指南 (五)—— Dockerfile 详解
Dockerfile 的 ENTRYPOINT 与 CMD
Dockerfile 有两个启动配置, CMD 和 ENTRYPOINT , 可以在 Dockerfile 中来配置容器启动时自动执行的命令, 但是这二者有什么区别呢, 接下来总结如下:
beginor
2020/08/10
1.1K0
Docker镜像构建知识:Dockerfile 命令详解
FROM 指令用于指定其后构建新镜像所使用的基础镜像。如果本地不存在,则默认会去Docker Hub下载指定镜像。FROM指令必是Dockerfile文件中的首条命令,启动构建流程后,Docker将基于该镜像构建新镜像,FROM后的命令也会基于这个基础镜像。
废柴阿尤
2023/12/18
4K0
一文详解Dockerfile自定义镜像
指定基础镜像,并且必须是第一条指令。如果不以任何镜像为基础,那么写法为:FROM scratch。同时意味着接下来所写的指令将作为镜像的第一层开始,语法:
一个风轻云淡
2023/11/03
1.1K0
Docker 进阶之 Dockerfile 详解
我们使用 Dockerfile 定义镜像,依赖镜像来运行容器,因此 Dockerfile 是镜像和容器的关键,Dockerfile 可以非常容易的定义镜像内容,同时在我们后期的微服务实践中,Dockerfile 也是重点关注的内容,今天我们就来一起学习它。
看、未来
2022/06/30
3.5K2
Docker 进阶之 Dockerfile 详解
玩转dockerfile
Docker 会缓存已有镜像的镜像层,构建新镜像时,如果某镜像层已经存在,就直接使用,无需重新创建。
sunsky
2020/08/20
1.2K0
玩转dockerfile
如何用Dockerfile创建镜像
该文章介绍了如何基于CentOS 6.7,源码安装nginx。首先准备了nginx-1.9.9.tar.gz安装包和CentOS6-Base-163.repo(163源),将这两个文件放到同一目录下,并在此目录下创建名称为Dockerfile的文件。之后在此文件中实现源替换、nginx编译安装、及一些依赖包的安装。最后执行命令\"docker build -t nginx-centos:6.7 .\"以构建镜像,并将该镜像命名为nginx-centos:6.7。
古时的风筝
2018/01/08
1.8K0
Dockerfile创建自定义Docker镜像以及CMD与ENTRYPOINT指令的比较
最近学习了Dockerfile文件的相关配置,这里做一下简单的总结,并对之前一直感到有些迷惑的CMD和ENTRYPOINT指令做个差异对比。
java干货
2021/02/19
2.1K0
Dockerfile、Docker-Compose基本命令与介绍
每条RUN指令将在当前镜像基础上执行指定命令,并提交为新的镜像,后续的RUN都在之前RUN提交后的镜像为基础,镜像是分层的,可以通过一个镜像的任何一个历史提交点来创建,类似源码的 版本控制 。
唐成勇
2019/05/26
2.2K0
使用Dockerfile
在前面我们简单提到了如何使用Dockerfile文件来创建镜像,鉴于这种方式在日常工作中使用的较为频繁,因此这里专门拿出一篇文章来研究如何使用Dockerfile配置文件来创建镜像。这里会介绍Dockerfile比较典型的基本结构及其支持的众多指令,然后通过这些指令来编写定制镜像的Dockerfile文件,接着便使用该Dockerfile文件来生成镜像,最后会结合笔者自身工作经验来谈谈一些使用Dockerfile的最佳实践。
啃饼思录
2021/01/12
9240
相关推荐
dockerfile (・ω・)ノ
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档