Dockerfile RUN, CMD, ENTRYPOINT 명령 차이

2968 단어 docker
Dockerfile 에서 RUN, CMD, ENTRYPOINT 는 명령 을 수행 하 는 데 사용 할 수 있 습 니 다. 다음은 세 가지 주요 용도 입 니 다.
  • RUN 명령 을 실행 하고 새로운 미 러 층 을 만 듭 니 다. 보통 패키지 설치
  • 에 사 용 됩 니 다.
  • CMD 명령 은 용기 가 시 작 된 후 기본적으로 실행 되 는 명령 과 인 자 를 설정 하지만 CMD 가 설정 한 명령 은 docker run 명령 뒤의 명령 행 인자 로 대 체 될 수 있 습 니 다
  • ENTRYPOINT 설정 용기 시작 시 실행 명령 (무시 되 지 않 고 반드시 실 행 됩 니 다. 실행 docker run 시 다른 명령 이 지정 되 더 라 도)
  • Shell 형식 과 Exec 형식 실행 명령
    저 희 는 RUN, CMD, ENTRYPOINT 가 실행 할 명령 을 두 가지 방식 으로 지정 할 수 있 습 니 다: Shell 형식 과 Exec 형식:
  • Shell 형식:.예 를 들 어 apt - get install python 3
  • Exec 형식: ["executable", "param 1", "param 2",...].예 를 들 어 ["apt - get", "install", "python 3"]
  • CMD 와 ENTRYPOINT 는 명령 의 가 독성 이 강하 고 이해 하기 쉽 기 때문에 Exec 형식 을 추천 합 니 다.RUN 은 두 가지 포맷 모두 가능 합 니 다.
    명령 실행
    RUN 명령 은 보통 응용 프로그램 과 패 키 지 를 설치 하 는 데 쓰 인 다.RUN 은 현재 미 러 의 맨 위 에 명령 을 실행 하고 새 미 러 층 을 만 듭 니 다.Dockerfile 에는 항상 여러 개의 RUN 명령 이 포함 되 어 있다.다음은 하나의 예 이다.
    RUN apt-get update && apt-get install -y \  
     bzr \
     cvs \
     git \
     mercurial \
     subversion
    

    apt - get update 와 apt - get install 은 RUN 명령 에 실 행 됩 니 다. 설치 할 때마다 최신 가방 을 보장 할 수 있 습 니 다.apt - get install 이 단독 RUN 에서 실 행 될 경우 apt - get update 로 만 든 미 러 층 을 사용 합 니 다. 이 층 은 오래 전에 캐 시 되 었 을 수도 있 습 니 다.
    CMD 명령
    CMD 명령 은 사용자 가 용기 의 기본 실행 명령 을 지정 할 수 있 도록 합 니 다.이 명령 은 용기 가 시작 되 고 docker run 이 다른 명령 을 지정 하지 않 았 을 때 실 행 됩 니 다.다음은 하나의 예 이다.
    CMD echo "Hello world"
    

    용기 docker run - it [image] 를 실행 하면 출력 합 니 다:
    Hello world
    

    그러나 뒤에 docker run - it [image]/bin/bash 와 같은 명령 을 추가 하면 CMD 는 무시 되 고 명령 bash 는 실 행 됩 니 다.
    root@10a32dc7d3d3:/#
    

    ENTRYPOINT 명령
    ENTRYPOINT 의 Exec 형식 은 용기 가 시 작 될 때 실행 할 명령 과 인 자 를 설정 하 는 데 사용 되 며 CMD 명령 이나 명령 행 인 자 를 통 해 추가 인 자 를 제공 할 수 있 습 니 다.ENTRYPOINT 의 매개 변 수 는 CMD 명령 과 다른 점 에서 항상 사 용 됩 니 다.다음은 하나의 예 이다.
    ENTRYPOINT ["/bin/echo", "Hello"]  
    

    용기 가 docker run - it [image] 를 통 해 시 작 될 때 출력 은:
    Hello
    

    docker run - it [image] CloudMan 을 통 해 시작 하면 다음 과 같이 출력 합 니 다.
    Hello CloudMan
    

    Dockerfile 을 다음 으로 변경 합 니 다.
    ENTRYPOINT ["/bin/echo", "Hello"]  
    CMD ["world"]
    

    용기 가 docker run - it [image] 를 통 해 시 작 될 때 출력 은:
    Hello world
    

    docker run - it [image] CloudMan 을 통 해 시작 하면 출력 은 다음 과 같 습 니 다.
    Hello CloudMan
    

    ENTRYPOINT 의 매개 변 수 는 항상 사용 되 고 CMD 의 추가 매개 변 수 는 용기 가 시 작 될 때 동적 으로 바 꿀 수 있 습 니 다.
    총결산
  • RUN 명령 으로 애플 리 케 이 션 과 패 키 지 를 설치 하고 미 러 를 구축한다.
  • Docker 미 러 의 용도 가 응용 프로그램 이나 서 비 스 를 실행 하 는 것 이 라면 MySQL 을 실행 하 는 등 Exec 형식의 ENTRYPOINT 명령 을 우선 사용 해 야 합 니 다.CMD 는 ENTRYPOINT 에 기본 인 자 를 추가 로 제공 할 수 있 으 며, docker run 명령 행 을 이용 하여 기본 인 자 를 교체 할 수 있 습 니 다.
  • 용기 에 기본 시작 명령 을 설정 하려 면 CMD 명령 을 사용 할 수 있다.사용 자 는 docker run 명령 줄 에서 이 기본 명령 을 바 꿀 수 있 습 니 다.
  • 좋은 웹페이지 즐겨찾기