RUN : 执行命令并创建新的Image Layer
CMD : 设置容器启动后默认执行的命令和参数
ENTRYPOINT: 设置容器启动时运行的命令
- Shell 格式
RUN apt-get install -y vim
CMD echo "hello docker"
ENTRYPOINT echo "hello docker"
- Exec格式
RUN [ "apt-get" , "install", "-y", "vim" ]
CMD [ "/bin/echo", "hello docker" ]
ENTRYPOINT [ "/bin/bash" ,"-c" " echo hello docker" ]
// CMD
CMD是容器启动默认执行的命令
如果docker run 指定了其他命令, CMD 命令被忽略
如果定义了多个CMD, 只有最后一个会执行
// ENTRYPOINT
让容器以应用程序或者服务的形式运行
不会被忽略,一定会执行
最佳实践:写一个shell脚本作为entrypoint
COPY docker.entrypoint.sh /usr/local/bin
ENTRYPOINT ["docker-entrypoint.sh"]
EXPOSE 27017
CMD ["mongod"]
网友评论