dockerfile语法(二)

RUN、CMD、ENTRYPOINT的区别

RUN : 执行命令并创建新的Image Layer
CMD : 设置容器启动后默认执行的命令和参数
ENTRYPOINT : 设置容器启动时运行的命令

CMD

  • 容器启动时默认执行的命令
  • 如果定义了多个CMD,只有最后一个会执行
  • 如果docker run指定了其他命令,CMD命令被忽略
    例如:
    FROM centos
    ENV name Docker
    CMD echo "hello $name"

执行 docker run [image] 输出的是hello Docker,执行Docker run -it [image] /bin/bash就不会输出hello Docker

ENTRYPOINT

  • 让容器以应用程序或者服务的形式运行
  • 不会被忽略,一定会执行
  • 最佳实践:写一个shell脚本作为entrypoint
    COPY docker-entrypoint.sh /usr/local/bin/
    ENTRYPOINT ["docker-entrypoint.sh"]
    EXPOSE 27017
    CMD ["mongod"]

猜你喜欢

转载自my.oschina.net/u/3628952/blog/1805868