【Docker那些事】系列文章

Dockerfile 文件结构、docker镜像构建过程详细介绍
Dockerfile文件中CMD指令与ENTRYPOINT指令的区别
构建Docker镜像指南,含实战案例
Docker 制作自定义化的Tomcat镜像
docker 安装 mysql 并映射数据库存放路径及配置文件
docker安装tomcat 映射配置文件、日志文件
docker安装nginx,配置nginx,并成功访问
docker安装redis并将配置文件和数据文件映射到外部

区别介绍

CMD [“要运行的程序”,“参数1”,“参数2”] : 指定启动容器时要运行的命令或脚本。可以有多个CMD指令,但只有最后一个生效。CMD会被docker run指令后的参数替换
ENTRYPOINT [“要运行的程序”,“参数1”,“参数2”] : 和CMD一样,指定启动容器时要运行的命令或脚本。ENTRYPOINT不会被docker run指令后的参数替换,而是在其后追加参数

实例说明CMD和ENTRYPOINT的区别

CMD实例

Dockerfile文件

FROM centos
MAINTAINER ber & ber@email.com
CMD ["ls"]

构建镜像

这里因为Dockerfile文件已经存在,我另存了一个Dockerfile1文件,构建时需要-f指定一下使用的Dockerfile文件

docker build -f Dockerfile1 -t mycentos:1 .

运行新镜像mycentos:1

docker run -it mycentos:1

可以看到最后的CMD指令在docker run时成功运行了。

再试着加-l参数运行,我想要实现ls -l的效果。能否成功呢?接着往下看实验

docker run -it mycentos:1 -i

很明显,失败了。

原因

CMD会被docker run指令后的参数替换。
在输入加参数-l指令后

docker run -it mycentos:1 -l

CMD ls 指令 就被替换成 CMD -l,这个指令明显是错的,当然不能执行,于是就报错提示指令不存在。

ENTRYPOINT实例

Dockerfile文件

FROM centos
MAINTAINER ber & ber@email.com
ENTRYPOINT ["ls"]

构建镜像

这里也是因为Dockerfile文件已经存在,我另存了一个Dockerfile2文件,构建时需要-f指定一下使用的Dockerfile文件

docker build -f Dockerfile2 -t mycentos:2 .

运行新镜像mycentos:2

docker run -it mycentos:2

可以看到最后的ENTRYPOINT指令在docker run时成功运行了。

再试着加-l参数运行,我想要实现ls -l的效果。这次能否成功呢?接着往下看实验

docker run -it mycentos:2 -l

ls -l查看当前文件夹下详细的文件信息,这里已经实现了我想要的。

当使用ENTRYPOINT指令时,docker run后加的参数-l作用到mycentos:2镜像上会以ls -l指令执行。
这也就是CMD指令和ENTRYPOINT指令的主要区别。

Dockerfile文件中CMD指令与ENTRYPOINT指令的区别相关推荐

  1. WinCE中sources文件中targetlibs与sourcelibs的作用与区别

    在WinCE里面,编译和链接的必备文件sources,做过WinCE BSP开发的一定都很熟悉,其中有2个关键字,targetlibs和sourcelibs,一直让我对其中的区别很感兴趣,故查阅了一些 ...

  2. dockerfile文件中copy上下文目录

    COPY 指令将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置. <目标路径> 可以是容器内的绝对路径,也可以是相对于工作 ...

  3. Dockerfile创建自定义Docker镜像以及CMD与ENTRYPOINT指令的比较

    1.概述 创建Docker镜像的方式有三种 docker commit命令:由容器生成镜像: Dockerfile文件+docker build命令: 从本地文件系统导入:OpenVZ的模板. 关于这 ...

  4. Dockerfile中CMD和ENTRYPOINT区别

    CMD指令和ENTRYPOINT指令的作用都是为镜像指定容器启动后的命令,那么它们两者之间有什么各自的优点呢? 为了更好地对比CMD指令和ENTRYPOINT指令的差异,我们这里再列一下这两个指令的说 ...

  5. Dockerfile中CMD和ENTRYPOINT命令详解

    原文:https://m.jb51.net/article/136264.htm Dockerfile中CMD和ENTRYPOINT命令详解 发布时间:2018-03-12 11:46:00 作者:s ...

  6. C++编译预处理:宏定义指令、文件包含指令和条件编译指令

     ◆ 不带参数的宏定义:用来产生与一个字符串(即宏名)对应的常量字符串,格式为:    #define 宏名 常量串 ◆ 带参数的宏定义:带参宏定义的形式很象定义一个函数,格式为:    #def ...

  7. Dockerfile文件解释

    一.先来看一个简单的 Dockerfile #这个Dockerfile作用是打一个python3项目环境 FROM python:3-alpine WORKDIR /app ADD . /app RU ...

  8. Docker_03_彻底搞懂Dockerfile文件

    文章目录 一.前言 二.Dockerfile基本命令 2.1 FROM (导入基础镜像,几乎是必须的,就像是java程序中的import导入) 2.2 RUN (在镜像内部执行一些命令,类似java程 ...

  9. Dockerfile文件万字全面解析

    Dockerfile是一个文本文件,包含一些Docker指令.执行docker build,Docker就会执行Dockerfile里面的指令,来自动创建镜像. 用法 Dockerfile里面的指令可 ...

最新文章

  1. Androidstudio SVN安装与使用
  2. android 实现模拟加载中的程序
  3. GeosparkViz 可视化
  4. shell的输入和输出
  5. 抖音封杀小猪佩奇,一年赚100亿的“社会人”得罪了谁?
  6. 混合样本数据增强(Mixed Sample Data Augmentation,MSDA)
  7. 使用keras为什么accuracy一直为0_TensorFlow 2.0+Keras 防坑指南
  8. P2962 [USACO09NOV]灯Lights
  9. html让页面两边都留点空位,标记语言——CSS布局_HTML/Xhtml_网页制作
  10. linux进程的线程信息,Linux 下查看线程信息
  11. CCNA 中文教材 (pdf)
  12. VS Winform开发实践纪要
  13. 基于matlab的暴雨强度公式参数推求,基于MATLAB的暴雨强度公式参数推求
  14. 现代文文言文转化器_初中语文丨7个文言文背诵技巧,不再为背书发愁,实用收藏...
  15. iec104点号_IEC104规约报文说明(104报文解释的较好的文本)
  16. 怎么把解压的文件在HTML打开,压缩文件怎么解压打开?
  17. 七种应刻意训练的顶级思维方法
  18. asp毕业设计—— 基于asp+access的网上聊天室设计与实现(毕业论文+程序源码)——网上聊天室
  19. 赛码网输入输出(js v8)问题并配置赛码网vscode本地环境
  20. 3D游戏设计-模型与动画

热门文章

  1. CSV 导入mysql 数据库
  2. Flex mp3播放
  3. Flex 3 metadata tags 标签
  4. 【今日CV 视觉论文速览】21 Nov 2018
  5. jdbc的小结 mysql
  6. linux-用户-进程-文件的关系
  7. IDEA编辑器多行编辑模式
  8. [BZOJ1565]植物大战僵尸
  9. 通过url传参实现多个页面使用同一个页面,再返回本页面
  10. 从源码角度看Spark on yarn client cluster模式的本质区别