docker ENTRYPOINT CMD 区别

在编写dockerfile中ENTRYPOINT CMD都只能使用一次,如果存在多个只有最后一个命令生效;

ENTRYPOINT和CMD的主要区别在于运行docker run 参数传递的方式不通;

EXAMPLE:

...

CMD ["echo"]

执行

docker run $IMAGE_ID echo carson

CMD 指定的命令可覆盖 docker run 如果传递的命令和CMD指定的命令相同时会被覆盖;

此echo已把CMD["echo"]给覆盖掉,所以最后的结果是:carson

...

ENTRYPOINT ["echo"]

执行

docker run $IMAGE_ID echo carson

ENTRYPOINT 指定的命令只是一个入口 docker run 传递的命令都会传递给ENTRYPOINT,所以不会被覆盖;

ENTRYPOINT会把容器名后面的所有内容都当成参数传递给其指定的命令(不会对命令覆盖),此echo当成是参数来执行,不会把ENTRYPOINT["echo"]给覆盖掉;

所以执行结果是:echo carson

大家肯定都有一个疑问

ENTRYPOINT  docker run 这2个命令执行的顺序是什么?

在dockerfile中ENTRYPOINT指定的参数比docker run指定的参数要先执行;

EXAMPLE:

...

ENTRYPOINT["echo","carson"]

执行

docker run $IMAGE_ID good

相当于执行了:

echo carson good

RUN命令VS CMD命令

都是存在于Dockerfile中,build image执行RUN命令;RUN时执行CMD,CMD是image最终执行的命令;

时间: 2024-10-08 23:07:45

docker ENTRYPOINT CMD 区别的相关文章

论docker中 CMD 与 ENTRYPOINT 的区别

Dockerfile里有 CMD 与 ENTRYPOINT 两个功能咋看起来很相似的指令,开始的时候觉得两个互用没什么所谓,但其实并非如此: CMD指令: The main purpose of a CMD is to provide defaults for an executing container. CMD在容器运行的时候提供一些命令及参数,用法如下: CMD ["executable","param1","param2"] (exec

AMD与CMD区别

AMD与CMD区别 最明显的区别就是在模块定义时对依赖的处理不同 AMD推崇依赖前置,在定义模块的时候就要声明其依赖的模块 CMD推崇就近依赖,只有在用到某个模块的时候再去require 这种区别各有优劣,只是语法上的差距,而且requireJS和SeaJS都支持对方的写法 AMD和CMD最大的区别是对依赖模块的执行时机处理不同,注意不是加载的时机或者方式不同 很多人说requireJS是异步加载模块,SeaJS是同步加载模块,这么理解实际上是不准确的,其实加载模块都是异步的,只不过AMD依赖前

AMD 与 CMD 区别到底在哪里?

模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问题进行系统性的分解以之处理.模块化是一种处理复杂系统分解为代码结构更合理,可维护性更高的可管理的模块的方式.可以想象一个巨大的系统代码,被整合优化分割成逻辑性很强的模块时,对于软件是一种何等意义的存在.对于软件行业来说:解耦软件系统的复杂性,使得不管多么大的系统,也可以将管理,开发,维护变得"有理可循". 还有一些对于模块化一些专业的定义为:模块化是软件系统的属性,这个系统被分解为一组高内聚,低耦合的模块.那么

docker save与docker export的区别

在http://chy940405.blog.51cto.com/11344281/1981804 这篇文章中分享了docker 基本操作Ⅱ(关于镜像操作),其中有一个问题就是docker save和docker export都能导出镜像包,咋看起来区别似乎不大,如下就来介绍两者的区别,适用于什么场景? - docker save > docker save的应用场景是,如果你的应用是使用docker-compose.yml编排的多个镜像组合,但你要部署的客户服务器并不能连外网.这时,你可以使用

CommonJS,AMD,CMD区别

zccst转载 学得比较晕,再次看commonjs,amd, cmd时好像还是没完全弄清楚,今天再整理一下: commonjs是用在服务器端的,同步的,如nodejs amd, cmd是用在浏览器端的,异步的,如requirejs和seajs 其中,amd先提出,cmd是根据commonjs和amd基础上提出的. 为什么晕呢?是因为没用,或用得太少.光看看文章是不行的. CommonJS CommonJs 是服务器端模块的规范,Node.js采用了这个规范. 根据CommonJS规范,一个单独的

docker run VS docker exec 的区别

“docker run”和“docker exec”都是 Docker 容器中用于执行的命令.然而,在不同的情况下,它们的使用有着本质上的区别. “docker run”命令 “docker run”通常是在新创建的容器中所使用的命令. 它适用于在没有其他容器运行的情况下,您想要创建一个容器,并且要启动它,然后在其上运行一个进程.它的格式如下所示: docker run [OPTIONS] IMAGE COMMAND [ARG...] 在“docker run”命令之后,您必须通过指定镜像来创建

Docker是什么?VM(虚拟机)和Docker有什么区别

Docker是什么 Docker是一个软件箱子,或者称之为一个容器,容器间相互隔离的一钟容器技术.系统级别的容器,比如说一个CentOS,或一个Ubuntu的容器,只要一次构建,你就可以发布到在任何地方(各种您熟悉的操作系统),并且获得一个Linux(CentOS或Ubuntu)的虚拟运行环境.当然Docker也能提供服务级别(PHP,Go,C++等等)的容器,甚至是自定义应用程序(一个博客,一个电子商务网站等等)容器. 注意:容器技术不只是单单指得是Docker,Docker比较流行,几乎成为

Docker Machine 和 Docker Engine 的区别

Docker Engine 当人们提到 Docker,一般而言,大家说的是 Docker Engine,如下图:  它是一个 client-server application. Docker Engine 由三个部分组成: Docker 进程(Docker Daemon) REST API:指定了和进程交互的接口 CLI(command line interface):通过 REST API 和 daemon 通信,诸如:docker run <image>, docker ps... Do

powershell和cmd区别

Powershell是cmd的超集,换句话说,cmd能做的事情,Powershell都能做,但是Powershell还能额外做许多cmd不能做的活. 主要是系统管理功能.脚本语言和在线帮助更强大,你确实可以只把它当成cmd来用,也可以学和用得更深 powershell 就是vista 以后版本的操作系统用来代替cmd命令行的,功能比cmd 更加强大,不仅仅可以用来进行执行简单的命令,还可以对服务器,电脑进行管理,开发程序等. Windows PowerShell 是一种命令行外壳程序和脚本环境,