ENTRYPOINT와 CMD는 해당 컨테이너가 마지막에 수행하게 될 실행 명령을 정의하는 선언문입니다.
CMD
컨테이너를 실행할때 (docker run할때) 맨 마지막에 인자값을 주게 되면 Dockerfile에 지정된 CMD값을 대신 하여 지정한 인자값으로 변경하여 실행되게 됩니다. 이 특성을 이용하여 docker run시 명령어를 주지 않았을 때 사용할 default 명령을 설정하거나 ENTRYPOINT의 default 파라미터를 설정할 때 사용합니다.
ENTRYPOINT
해당 컨테이너가 수행될 때 반드시 ENTRYPOINT 에서 지정한 명령을 수행되도록 지정된다.
컨테이너 실행시 ENTRYPOINT에 지정한 명령어를 유지하고 추가 인자를 CMD로 받아서 처리한다 .
추가 인자를 받더라도 ENTRYPOINT의 값은 변하지 않고 CMD 값이 변하게 됩니다.
올바른 사용 방법
컨테이너가 수행될 때 변경되지 않을 실행 명령은 ENTRYPOINT가 좋습니다. 이미지를 만들 때 목적이 확실하기 때문에 ENTRYPOINT로 정의 하는 것이 명확합니다. default인자 값이 필요하다면 CMD를 쓰시면 됩니다.
ENTRYPOINT와 CMD는 리스트 포맷을 정의 해주는게 좋다.
쉘스트립트로 작성도 가능하지만 그 쉘스크립트를 문자열로 읽는 단계가 생기고 리스트 포맷 [""]으로하면 바로 task를 실행시키고 클리어하게 쓸 수 있습니다. 그리고 Docker 공식 Doucumentation도 List 형태로 작성하는 것을 추천합니다.
'기타 > 42Seoul' 카테고리의 다른 글
[42Seoul] push_swap 서브젝트 정리 - yepark (0) | 2021.03.07 |
---|---|
[42Seoul] minishell External Functions 정리 -yepark- (0) | 2020.12.26 |
ft_server (0) | 2020.09.11 |