先说CMD,以tomcat为例,如果启动容器命令如下:
docker run -it -p 7777:8080 tomcat ls -l
那么,相当于容器对应的dockerfile文件里面加了个
CMD ls -l
这个命令会使dockerfile文件里之前定义的CMD命令失效

而ENTRYPOINT作用是追加,看这个dockerfile:

FROM centos
RUN yum install -y curl
ENTRYPOINT ["curl","-s","http://ip.cn"]

build容器命令如下:
docker build -f /pathto/dockerfile -t mydefname:version .
查看容器
docker images mydefname:version
启动容器
docker run mydefname -i
相当于在dockerfile里面
ENTRYPOINT [“curl”,”-s”,”http://ip.cn”]
变成了
ENTRYPOINT [“curl”,”-s”,”-i”,http://ip.cn”]


~~~关于OBNBUILD~~~~~
新建dockerfile_father:

FROM centos
RUN yum install -y curl
ENTRYPOINT ["curl","-s","http://ip.cn"]
ONBUILD RUN echo "father onbuild...886"

build image
docker build -f /pathto/dockerfile_father -t myfather .

新建dockerfile_son:

FROM myfather
RUN yum install -y curl
ENTRYPOINT ["curl","-s","http://ip.cn"]

build image
docker build -f /pathto/dockerfile_son -t myson .
output:
….
“father onbuild…886”
….