CMD和ENTRYPOINT的区别

  1. CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
  2. ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令

测试CMD

  1. # 编写 dockerfile文件
    [root@localhost dockerfile]# vim DockerFile-cmd
    FROM centos
    CMD ["ls","-a"]

    # 构建镜像
    [root@localhost dockerfile]# docker build -f DockerFile-cmd -t cmdtest .
  2.  
  3. [root@localhost dockerfile]# docker images
  4. REPOSITORY TAG IMAGE ID CREATED SIZE
  5. cmdtest latest 3160b7785cc7 15 seconds ago 209MB

  6. # 运行镜像
  7. [root@localhost dockerfile]# docker run 3160b7785cc7
  8. .
  9. ..
  10. .dockerenv
  11. bin
  12. dev
  13. etc
  14. home
  15. lib
  16. lib64
  17. lost+found
  18. media
  19. mnt
  20. opt
  21. proc
  22. root
  23. run
  24. sbin
  25. srv
  26. sys
  27. tmp
  28. usr
  29. var

    # 想追加一个命令 -l 即ls -al
    [root@localhost dockerfile]# docker run 3160b7785cc7 -l
    docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "-l": executable file not found in $PATH: unknown.

    # cmd的情况下,-l会替代CMD ["ls","-a"]命令,-l不是命令所以报错

测试ENTRYPOINT

  1. [root@localhost dockerfile]# vim DockerFile-ENTRYPOINT
    FROM centos
    ENTRYPONIT ["ls","-a"]

  2. [root@localhost dockerfile]# docker build -f DockerFile-ENTRYPOINT -t entrypoint-test .
  3. Sending build context to Docker daemon 4.096kB
  4. Step 1/2 : FROM centos
  5. ---> 300e315adb2f
  6. Step 2/2 : ENTRYPOINT ["ls","-a"]
  7. ---> Running in 4b061853bebd
  8. Removing intermediate container 4b061853bebd
  9. ---> 6ef0aa48e5e2
  10. Successfully built 6ef0aa48e5e2
  11. Successfully tagged entrypoint-test:latest

  12. [root@localhost dockerfile]# docker images
  13. REPOSITORY TAG IMAGE ID CREATED SIZE
  14. entrypoint-test latest 6ef0aa48e5e2 11 seconds ago 209MB
  15.  
  16. [root@localhost dockerfile]# docker run 6ef0aa48e5e2
  17. .
  18. ..
  19. .dockerenv
  20. bin
  21. dev
  22. etc
  23. home
  24. lib
  25. lib64
  26. lost+found
  27. media
  28. mnt
  29. opt
  30. proc
  31. root
  32. run
  33. sbin
  34. srv
  35. sys
  36. tmp
  37. usr
  38. var

    # 我们的追加命令,是直接拼在我们的ENTRYPOINT命令的后面
  39. [root@localhost dockerfile]# docker run 6ef0aa48e5e2 -l
  40. total 0
  41. drwxr-xr-x. 1 root root 6 Aug 30 07:04 .
  42. drwxr-xr-x. 1 root root 6 Aug 30 07:04 ..
  43. -rwxr-xr-x. 1 root root 0 Aug 30 07:04 .dockerenv
  44. lrwxrwxrwx. 1 root root 7 Nov 3 2020 bin -> usr/bin
  45. drwxr-xr-x. 5 root root 340 Aug 30 07:04 dev
  46. drwxr-xr-x. 1 root root 66 Aug 30 07:04 etc
  47. drwxr-xr-x. 2 root root 6 Nov 3 2020 home
  48. lrwxrwxrwx. 1 root root 7 Nov 3 2020 lib -> usr/lib
  49. lrwxrwxrwx. 1 root root 9 Nov 3 2020 lib64 -> usr/lib64
  50. drwx------. 2 root root 6 Dec 4 2020 lost+found
  51. drwxr-xr-x. 2 root root 6 Nov 3 2020 media
  52. drwxr-xr-x. 2 root root 6 Nov 3 2020 mnt
  53. drwxr-xr-x. 2 root root 6 Nov 3 2020 opt
  54. dr-xr-xr-x. 255 root root 0 Aug 30 07:04 proc
  55. dr-xr-x---. 2 root root 162 Dec 4 2020 root
  56. drwxr-xr-x. 11 root root 163 Dec 4 2020 run
  57. lrwxrwxrwx. 1 root root 8 Nov 3 2020 sbin -> usr/sbin
  58. drwxr-xr-x. 2 root root 6 Nov 3 2020 srv
  59. dr-xr-xr-x. 13 root root 0 Aug 24 13:01 sys
  60. drwxrwxrwt. 7 root root 145 Dec 4 2020 tmp
  61. drwxr-xr-x. 12 root root 144 Dec 4 2020 usr
  62. drwxr-xr-x. 20 root root 262 Dec 4 2020 var

Docker系列(23)- CMD和ENTRYPOINT的区别的更多相关文章

  1. Docker | dockerfile构建centos镜像,以及CMD和ENTRYPOINT的区别

    构建自己的centos镜像 docker pull centos下载下来的镜像都是基础版本,缺少很多常用的命令功能,比如:ll.vim等等, 下面介绍制作一个功能较全的自己的centos镜像. 步骤 ...

  2. 论docker中 CMD 与 ENTRYPOINT 的区别

    Dockerfile里有 CMD 与 ENTRYPOINT 两个功能咋看起来很相似的指令,开始的时候觉得两个互用没什么所谓,但其实并非如此: CMD指令: The main purpose of a ...

  3. 论docker中 CMD 与 ENTRYPOINT 的区别(转)

    Dockerfile 用于自动化构建一个docker镜像.Dockerfile里有 CMD 与 ENTRYPOINT 两个功能咋看起来很相似的指令,开始的时候觉得两个互用没什么所谓,但其实并非如此: ...

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

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

  5. Dockerfile中CMD和ENTRYPOINT的区别

    当启动一个容器时,CMD和ENTRYPOINT都可以用来执行启动命令.但它们的具体用法还是有一些区别: 1. Dockerfile必须至少指定CMD或者ENTRYPOINT其中的一个. 2. ENTR ...

  6. CMD 与 ENTRYPOINT 的区别

    Dockerfile里有 CMD 与 ENTRYPOINT 两个功能咋看起来很相似的指令,开始的时候觉得两个互用没什么所谓,但其实并非如此: CMD指令: The main purpose of a ...

  7. Docker系列三:Dockerfile

    Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像 Dockerfile由一行行命令语句组成,支持#开头的注释 Dockerfile分为四部分:基础镜像信 ...

  8. docker CMD 和 ENTRYPOINT 区别

    昨天用Dockerfile来启动mongodb的集群,启动参数--replSet死活没执行,最后就决定研究一哈cmd和entrypoint.但是上网看了一些资料个人觉得讲的不好,还是没有说出根本的东西 ...

  9. Docker 的CMD与ENTRYPOINT区别

    我们在构建一个docker镜像的时候,Dockerfile里面有两个命令会引起我们的注意,它们就是 CMD 和 ENTRYPOINT,看起来很相似,实际上并非如此. 一.CMD 顾名思义就是允许用户指 ...

随机推荐

  1. 构建工具之Maven的使用(一)

    一.前言 对于开发一个Java项目,上线之前会通过编译,测试,打包,部署这几个构建过程,如果文件较少,我们可以使用java-->javac-->jar这些命令去完成上述的构建流程.但是当工 ...

  2. MeteoInfo-Java解析与绘图教程(三)

    MeteoInfo-Java解析与绘图教程(三) 上文我们说到简单绘制色斑图(卫星云图),但那种效果可定不符合要求,一般来说,客户需要的是在地图上色斑图的叠加,或者是将图片导出分别是这两种效果 当然还 ...

  3. Windows下安装RocketMQ

    目录 前言 环境 具体操作 下载 环境变量配置 启动 关闭 生产.消费实例 RocketMQ Console 前言 项目中用到了延迟消息队列,记录下一win10下rocketmq的安装 环境 win1 ...

  4. FTP 大文件传输问题 解决

    问题描述 将附件上传至FTP服务器,但是当附件过大,其大小为几百兆或1-2G时,会出现上传失败的现象 FTP上传原理解析 这里我们使用的是.Net的FtpWebRequest 创建FtpClient ...

  5. 0x800b010a 证书

    无论是装微软的什么应用,只要报这个错误,下载这个证书: http://download.microsoft.com/download/2/4/8/248D8A62-FCCD-475C-85E7-6ED ...

  6. 同步(synchronized)

    转载至:https://www.cnblogs.com/dolphin0520/p/3923737.html 一.什么时候会出现线程安全问题? 在单线程中不会出现线程安全问题,而在多线程编程中,有可能 ...

  7. UWP使用命名管道与桌面程序通信 (C#)

    关于UWP的历史,其起源是Microsoft在Windows 8中引入的Metro apps.(后来又被称作Modern apps, Windows apps, Universal Windows A ...

  8. dubbo(一)

    1. Introduction 参考链接:https://www.baeldung.com/dubbo Dubbo is an open-source RPC and microservice fra ...

  9. Jemeter压力测试

    Jmeter教程 简单的压力测试 Jmeter是一个非常好用的压力测试工具.  Jmeter用来做轻量级的压力测试,非常合适,只需要十几分钟,就能把压力测试需要的脚本写好. 转载自小坦克:https: ...

  10. C# - 习题05_写出程序的输出结果o1.count

    时间:2017-08-24 整理:byzqy 题目:写出下列程序的输出结果: //原题程序如下: class Class1 { private static int count = 0; static ...