CMD

先说老大 CMD

当一个容器准备好运行之后,需要找一个指定命令来创建一个初始进程并运行。

一,/bin/sh -c

因为某种意义上一个Dockerfile其实可以理解是一个简化版bash 脚本,所以一般情况下,我们可以像写bash命令一样使用CMD来指定使用bash来运行命令。

比如:

CMD echo 'hello world!'

这样,容器创建之后,就会使用/bin/sh -c来运行上述命令,如下所示:

/bin/sh -c 'echo hello world!'

二, 直接运行可执行程序

如果我们不想是用/bin/sh而是直接运行一个可执行程序的话,怎么办呢?这种情况下,可以使用CMD命令的另外一种形式,如下:

CMD ["echo", "hello world!"]

这样,容器准备好以后就会直接创建一个进程来运行echo这个程序 (/bin/echo),打印出"hello world!"。

使用CMD有一个好处就是在使用docker run命令运行容器时可以使用command参数来覆盖CMD缺省指定的命令。比如:

docker run -it test:latest echo 'hello world!'

ENTRYPOINT

其实ENTRYPOINT是老大,它比CMD优先级更高

我们也可以使用ENTRYPOINT来指定容器初始程序,可以是bash /bin/sh, 也可以是其他可执行程序。语法和CMD的相似。比如:

#/bin/sh -c
ENTRYPOINT echo 'hello world!' #exeutable
ENTRYPOINT ["echo", "hello world!"]

两兄弟如何相处

一 EntryPoint 老大

CMD可以指定容器运行入口。但ENTRYPOINT作为entry point,有不可置疑的地位。它是老大,只有它不在的时候,CMD才能当老大。那么它在的时候CMD是什么地位呢?这要看它以什么方式存在,如果是使用/bin/sh -c来启动容器,那么没有CMD什么事了。如果是使用其他可执行程序启动容器,那么CMD指定的所有东东统统作为该可执行程序的后续参数使用。

Dockerfile 中的 CMD和ENTRYPOINT 两兄弟的更多相关文章

  1. Dockerfile 中的 CMD 与 ENTRYPOINT

    CMD 和 ENTRYPOINT 指令都是用来指定容器启动时运行的命令.单从功能上来看,这两个命令几乎是重复的.单独使用其中的一个就可以实现绝大多数的用例.但是既然 doker 同时提供了它们,为了在 ...

  2. Dockerfile 中的 CMD 与 ENTRYPOINT(转)

    add by zhj:  CMD和ENTRYPOINT的差异很小,可以认为完全可以相互代替.两者都支持shell模式和exec模式, shell模式:跟你在shell下执行命令的格式一样,简单方便,但 ...

  3. Dockerfile 中 RUN, CMD, ENTRYPOINT 的区别

    RUN 指令:用于指定 docker build 过程中要运行的命令. 语法格式: RUN <command> 或 RUN ["<executeable>" ...

  4. Servlet中分发器和重定向两兄弟

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6513702111698485767/ 弄清这个两兄弟,我们还是从练习中去理解 先创建一个数据提交页面,注意路径 编 ...

  5. Dockerfile之CMD与Entrypoint使用要点

    CMD与ENTRYPOINT都可以代表容器的启动命令,单丛语义上来理解,CMD是一个命令或者口令,而ENTRYPOINT则是一个入口(相当于容器启动时的入口),那么其实就可以理解为每当我们开启一个容器 ...

  6. 论docker中 CMD 与 ENTRYPOINT 的区别

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

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

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

  8. CMD 与 ENTRYPOINT 的区别

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

  9. [转帖]Dockerfile 中 ENTRYPOINT 与 CMD 的区别

    Dockerfile 中 ENTRYPOINT 与 CMD 的区别 https://it.baiked.com/system/docker/1975.html 简单区别 Dockerfile 有两个启 ...

随机推荐

  1. 理解iOS Event Handling

    写在前面 最近的一个iOS App项目中遇到了这么问题:通过App访问服务器的大多数资源不需要登录,但是访问某些资源是需要用户提供验证的,一般来说,通常App的做法(譬如美团App)将这些资源放在“我 ...

  2. 【Codeforces 762A】 k-th divisor

    [题目链接] 点击打开链接 [算法] 我们知道,一个数的因子是成对出现的,一半小于等于sqrt(N),一半大于sqrt(N),因此,我们可以从 2..sqrt(N)枚举因子 [代码] #include ...

  3. 【转】创建和使用ANDROID LIBRARY工程

    原文网址:http://www.cnblogs.com/Greenwood/archive/2011/06/19/2084499.html 摘要: 创建library供多个工程共享代码.资源是非常常见 ...

  4. 把文件类型转化为byte[]

    转自:https://blog.csdn.net/xinxiqi/article/details/78899159 package com.sanqing.util; import java.io.B ...

  5. TRACE 学习

    TRACE   宏有点象我们以前在C语言中用的Printf函数,使程序在运行过程中输出一些调试信息,使我们能了解程序的一些状态.在Output中可以查看到结果. 但有一点不同的是:TRACE   宏只 ...

  6. 【209】SQL学习&C#连接数据库

    参考:传智播客.Net培训.net视频教程 >> [04]第四季 SQL(1-16)参考:传智播客.Net培训.net视频教程 >> [05]第五季 ADO.NET(1-30) ...

  7. 【207】WinForm Chart类

    目录: 在工具箱中找到 Chart 控件并使用 设置 Chart 属性 代码中设置属性 属性中设置属性 Chart 类说明 ChartAreas ChartAreaCollection 类 Chart ...

  8. hihocoder 1582 : Territorial Dispute(凸包)

    传送门 题意 略 分析 求一个凸包即可 1.所有点在凸包上且点数>3,令凸包上第1,3点为'A',其余点为'B' 2.部分点在凸包上,令凸包上点为'A',其余点为'B' 3.无可行情况 附代码 ...

  9. P1251 递推专练3

    递推专练3 描述 Description 圆周上有N个点.连接任意多条(可能是0条)不相交的弦(共用端点也算相交)共有多少种方案? 输入格式 Input Format 读入一个数N.<=N< ...

  10. Luogu P4139 上帝与集合的正确用法【扩展欧拉定理】By cellur925

    题目传送门 题目中的式子很符合扩展欧拉定理的样子.(如果你还不知扩展欧拉定理,戳).对于那一堆糟心的2,我们只需要递归即可,递归边界是模数为1. 另外,本题中好像必须要用快速乘的样子...否则无法通过 ...