Docker-ENTRYPOINT笔记
目录
概述
Docker 中 ENTRYPOINT
一直是个容易混淆的概念,今天浏览了一下官网,简单总结一下。官网的参考链接如下。
ENTRYPOINT
在 Dockerfile 中,ENTRYPOINT
是作为容器运行的命令存在的,但是他是非必须的,原因是除了可以在 Dockerfile 中填写 ENTRYPOINT
,你还可以写 CMD
,甚至同时使用两者。
如果指定了 ENTRYPOINT
,大部分的 Docker 镜像都定义了 ENTRYPOINT
,即使不写,你依然可以从你的 base 镜像中获取到 ENTRYPOINT
,前提当然是 base 镜像有定义。另外,就算你的 Dockerfile 定义了 ENTRYPOINT
,你还可以通过命令行的模式,在启动容器的时候提供 --entrypoint
选项来覆盖。下面的例子的含义是,通过 --entrypoint
来覆盖 Dockerfile 里定义的 ENTRYPOINT
,然后给 CMD
命令传入 -l /tmp
的命令。
|
|
以上例子,你可以想象成你定义的 Dockerfile 是这样的。
|
|
总结
实践中,ENTRYPOINT
并不会经常被覆盖,但是如果镜像文件中指定了 ENTRYPOINT
,那么一定程度上,会让你的镜像更 flexible,或者说更容易使用。举个 Spark 官方提供的 Dockerfile 为例,最后也是使用了 ENTRYPOINT
,那么他的灵活性体现在哪里呢?我运行镜像的时候,可以通过 --entrypoint
来覆盖默认的 ENTRYPOINT
命令,比如我想看看镜像里的文件的时候,可以这么干。
|
|
警告
本文最后更新于 2017年2月1日,文中内容可能已过时,请谨慎参考。