[docker] Dockerfile에서 RUN과 CMD의 차이점

CMDvs를 사용해야 할 때 혼란 스럽습니다 RUN. 예를 들어, bash / shell 명령 (예 :)을 실행하려면 ls -la항상 사용 CMD하거나 사용 하는 상황이 RUN있습니까? 이 두 가지 Dockerfile지시문 에 대한 모범 사례를 이해하려고합니다 .



답변

RUN 은 이미지 빌드 단계이며 RUN명령 후 컨테이너 상태 는 컨테이너 이미지에 커밋됩니다. Dockerfile RUN에는 이미지를 빌드하기 위해 서로 겹쳐지는 많은 단계가 있을 수 있습니다 .

CMD 는 빌드 된 이미지를 시작할 때 컨테이너가 기본적으로 실행하는 명령입니다. Dockerfile은 최종 CMD정의 된 항목 만 사용합니다 . CMD로 컨테이너를 시작할 때를 재정 의 할 수 있습니다 docker run $image $other_command.

ENTRYPOINTCMD컨테이너가 이미지를 시작하는 방식과 밀접한 관련이 있으며 수정할 수 있습니다.


답변

RUN -docker 이미지를 빌드하는 동안 명령이 트리거됩니다.

CMD -생성 된 도커 이미지를 시작하는 동안 명령이 트리거됩니다.


답변

기사가 그들 간의 차이점을 이해하는 데 매우 도움 된다는 것을 알았 습니다

RUN -RUN 명령을 사용하면 필요한 응용 프로그램 및 패키지를 설치할 수 있습니다. 현재 이미지 위에서 모든 명령을 실행하고 결과를 커밋하여 새 레이어를 만듭니다. 종종 Dockerfile에 여러 개의 RUN 명령어가 있습니다.

CMD -CMD 명령을 사용하면 명령을 지정하지 않고 컨테이너를 실행할 때만 실행되는 기본 명령을 설정할 수 있습니다. Docker 컨테이너가 명령으로 실행되면 기본 명령이 무시됩니다. Dockerfile에 둘 이상의
CMD 명령이있는 경우 마지막 CMD 명령을 제외한 모든 명령이 무시됩니다.


답변

RUN -Python을 설치하면 컨테이너에 파이썬이 이미지
CMD에 탔습니다
-python hello.py, 좋아하는 스크립트를 실행하십시오


답변

RUN 명령 : RUN 명령은 기본적으로 이미지를 빌드 할 때 기본 명령을 실행합니다. 또한 다음 단계를 위해 이미지 변경 사항을 커밋합니다.

새로운 이미지를 만드는 과정을 돕기 위해 하나 이상의 RUN 명령이있을 수 있습니다.

CMD 명령 : CMD 명령은 새 컨테이너의 기본 명령 만 설정합니다. 빌드시 실행되지 않습니다.

도커 파일에 둘 이상의 CMD 명령이있는 경우 마지막 명령을 제외한 모든 명령이 무시됩니다. 이 명령은 아무것도 실행하지 않고 기본 명령 만 설정합니다.


답변

참고 : RUN과 CMD를 혼동하지 마십시오. RUN은 실제로 명령을 실행하고 결과를 커밋합니다. CMD는 빌드시 아무 것도 실행하지 않지만 이미지의 의도 된 명령을 지정합니다.

도커 파일 참조에서

https://docs.docker.com/engine/reference/builder/#cmd


답변

RUN : 많을 수 있으며 빌드시 사용 프로세스 됩니다 (예 : 여러 라이브러리 설치)

CMD : 만 1, 가질 수 실행 시작 지점을 (예를 들어 ["npm", "start"], ["node", "app.js"])