来自这篇文章
CMD
和ENTRYPOINT
,都可以指定镜像启动命令,CMD
会被镜像启动参数覆盖,ENTRYPOINT
不会(除非增加--entrypoint参数)。
例1-CMD
# dockerfile
FROM ubuntu
MAINTAINER sofija
RUN apt-get update
CMD [“echo”, “Hello World”]
不带命令
docker run [image_name]
以上命令运行,输出Hello world
带命令
sudo docker run [image_name] hostname
以上命令运行,输出hostname
命令的内容
例2-ENTRYPOINT
FROM ubuntu
MAINTAINER sofija
RUN apt-get update
ENTRYPOINT [“echo”, “Hello World”]
不带命令
docker run [image_name]
以上命令运行,输出Hello world
带命令
sudo docker run [image_name] hostname
以上命令运行,输出Hello world hostname
,即被添加在了原命令后面
例3-CMD和ENTRYPOINT同时使用
FROM ubuntu
MAINTAINER sofija
RUN apt-get update
ENTRYPOINT [“echo”, “Hello”]
CMD [“World”]
不带命令
docker run [image_name]
以上命令运行,输出Hello world
,CMD作为参数附加在了ENTRYPOINT之后
带命令
sudo docker run [image_name] hostname
以上命令运行,输出Hello hostname
,即CMD被替换,而ENTRYPOINT仍生效