Dockerfile RUN/CMD/ENTRYPOINT命令区别
Dockerfile RUN/CMD/ENTRYPOINT命令区别
AlexDockerfile RUN/CMD/ENTRYPOINT命令区别
shell和Exec格式
- shel格式
1
2
3RUN apt-get install -y vim
CMD echo "hello $name"
ENTRYPOINT echo "hello $name" - EXEC格式
1
2
3RUN ["apt-get" , "install" , "-y" , "vim"]
CMD ["/bin/echo", "hello $name"]
ENTRYPOINT ["/bin/echo", "hello $name"]
RUN
- 执行命令并创建的行images layer
CMD
- 设置容器启动后默认执行的命令和参数
- 容器启动时默认执行的命令
- 如果docker run制定了其他命令,cmd命令被忽略
- 如果定义了多个cmd,只有最后一个会执行
- vi Dockerfile
1
2
3FROM centos
ENV name Docker
CMD echo "hello $name" - 编译、执行
1
2docker@demo:/data/www/docker-cmd$ docker run hgliu/docker-cmd
hello Docker
ENTRYPOINT
- 设置容器启动时运行的命令
- 以后台服务形式执行
vi Dockerfile
1
2
3FROM centos
ENV name Docker
ENTRYPOINT echo "hello $name"- 编译/运行
1
2docker build -t hgliu/docker-cmd-entrypoint .
docker run hgliu/docker-cmd-entrypoint - 输出结果:
1
2docker@demo:/data/www/docker-cmd$ docker run hgliu/docker-cmd-entrypoint
hello Docker