同样是一个脚本,一个用CMD["/opt/setup.sh"],一个用ENTRYPOING["/opt、setup.sh"],此时我都以docker run -d 去启动这个容器,此时用CMD的就可以up起来,但是ENTRYPOING却是Exited,而且他还不能start起来,我查了CMD和ENTRYPOING的区别等资料,都没有发现原因,我现在就想知道就我的这个而言,他的原理是什么?
차이점은 ENTERPOINT는 덮어쓰이지 않지만 CMD는 덮어쓰게 된다는 점입니다.
예를 들어 동일한 docker run -it --rm <image_name> hello world
docker run -it --rm <image_name> hello world
ENTERYPOINT ["/bin/bash"]인 경우 실행할 실제 명령은 /bin/bash hello world
ENTERYPOINT ["/bin/bash"]
/bin/bash hello world
CMD ["/bin/bash"]인 경우 실제 명령 실행은 hello world입니다.
CMD ["/bin/bash"]
hello world
즉, 컨테이너 실행 시 명령이 ENTERYPOINT의 매개변수로 전달되며, CMD를 사용할 경우 CMD가 직접 대체됩니다.
따라서 dockerfile에서 두 가지를 모두 사용하는 까다로운 방법이 있습니다.
이런 방식으로 사용자는 mongod 시작을 위한 매개변수를 사용자 정의할 수 있을 뿐만 아니라 매개변수가 지정되지 않은 경우 --help를 사용하여 기본적으로 도움말 정보를 표시할 수도 있습니다
로그를 먼저 확인하세요
차이점은 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를 사용하여 기본적으로 도움말 정보를 표시할 수도 있습니다
로그를 먼저 확인하세요