찾다

 >  Q&A  >  본문

dockerfile中CMD和ENTRYPOING真正的区别

同样是一个脚本,一个用CMD["/opt/setup.sh"],一个用ENTRYPOING["/opt、setup.sh"],此时我都以docker run -d 去启动这个容器,此时用CMD的就可以up起来,但是ENTRYPOING却是Exited,而且他还不能start起来,我查了CMD和ENTRYPOING的区别等资料,都没有发现原因,我现在就想知道就我的这个而言,他的原理是什么?

世界只因有你世界只因有你2774일 전826

모든 응답(2)나는 대답할 것이다

  • 黄舟

    黄舟2017-04-24 16:02:43

    차이점은 ENTERPOINT는 덮어쓰이지 않지만 CMD는 덮어쓰게 된다는 점입니다.

    예를 들어 동일한 docker run -it --rm <image_name> hello world

    을 실행합니다.

    ENTERYPOINT ["/bin/bash"]인 경우 실행할 실제 명령은 /bin/bash hello world

    입니다.

    CMD ["/bin/bash"]인 경우 실제 명령 실행은 hello world입니다.

    즉, 컨테이너 실행 시 명령이 ENTERYPOINT의 매개변수로 전달되며, CMD를 사용할 경우 CMD가 직접 대체됩니다.

    따라서 dockerfile에서 두 가지를 모두 사용하는 까다로운 방법이 있습니다.

    으아아아

    이런 방식으로 사용자는 mongod 시작을 위한 매개변수를 사용자 정의할 수 있을 뿐만 아니라 매개변수가 지정되지 않은 경우 --help를 사용하여 기본적으로 도움말 정보를 표시할 수도 있습니다

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-24 16:02:43

    로그를 먼저 확인하세요

    회신하다
    0
  • 취소회신하다