RUN vs CMD vs ENTRYPOINT - 매일 5 분 씩 Docker 용기 기술 돌리 기 (17)
간단히 말 하면
docker run
뒤에 있 는 명령 행 인자 교체.다음은 우리 가 상세 하 게 분석 하 겠 다.
Shell 과 Exec 형식
저 희 는 RUN, CMD, ENTRYPOINT 가 실행 할 명령 셸 형식 과 Exec 형식 을 두 가지 방식 으로 지정 할 수 있 습 니 다.
셸 형식
예컨대
RUN apt-get install python3
CMD echo "Hello world"
ENTRYPOINT echo "Hello world"
명령 이 실 행 될 때 셸 형식 바 텀 에서/bin/sh - c 를 호출 합 니 다. .
예 를 들 어 아래 Dockerfile 세 션
ENV name Cloud Man
ENTRYPOINT echo "Hello, $name"
docker run 을 실행 하면 출력 합 니 다.
Hello, Cloud Man
환경 변수 주의
name
이미 값 을 받다 Cloud Man
교체다음은 Exec 형식 을 살 펴 보 겠 습 니 다.
Exec 형식
["executable", "param1", "param2", ...]
예컨대
RUN ["apt-get", "install", "python3"]
CMD ["/bin/echo", "Hello world"]
ENTRYPOINT ["/bin/echo", "Hello world"]
명령 이 실 행 될 때 셸 에 의 해 해석 되 지 않 습 니 다.예 를 들 어 아래 Dockerfile 세 션
ENV name Cloud Man
ENTRYPOINT ["/bin/echo", "Hello, $name"]
용기 실행 시 출력
Hello, $name
환경 변수 'name' 이 바 뀌 지 않 았 음 을 주의 하 십시오.환경 변 수 를 사용 하려 면 다음 과 같이 수정 하 십시오.
ENV name Cloud Man
ENTRYPOINT ["/bin/sh", "-c", "echo Hello, $name"]
용기 실행 시 출력
Hello, Cloud Man
CMD 와 ENTRYPOINT 는 Exec 형식 을 추천 합 니 다. 명령 의 가 독성 이 강하 고 이해 하기 쉽 기 때 문 입 니 다.RUN 은 두 가지 포맷 모두 가능 합 니 다.
RUN
RUN 명령 은 보통 응용 프로그램 과 패 키 지 를 설치 하 는 데 쓰 인 다.
RUN 은 현재 미 러 의 맨 위 에 명령 을 실행 하고 새 미 러 층 을 만 듭 니 다.Dockerfile 에는 항상 여러 개의 RUN 명령 이 포함 되 어 있다.
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 는 세 가지 형식 이 있어 요.
CMD 가 어떻게 일 하 는 지 살 펴 보 겠 습 니 다.Dockerfile 세 션 은 다음 과 같 습 니 다.
CMD echo "Hello world"
용기 docker run - it [p w picpath] 를 실행 하면 출력 합 니 다.
Hello world
그러나 뒤에 docker run - it [p w picpath]/bin/bashCMD 와 같은 명령 을 추가 하면 명령 bash 가 무 시 됩 니 다.
root@10a32dc7d3d3:/#
ENTRYPOINT
ENTRYPOINT 명령 은 용 기 를 응용 프로그램 이나 서비스 로 실행 할 수 있 습 니 다.
ENTRYPOINT 는 CMD 와 비슷 해 보 입 니 다. 실행 할 명령 과 인 자 를 지정 할 수 있 습 니 다.다른 점 은 ENTRYPOINT 가 무시 되 지 않 고 반드시 실 행 될 것 입 니 다. docker run 을 실행 할 때 다른 명령 을 지정 하 더 라 도.
ENTRYPOINT 는 두 가지 형식 이 있 습 니 다.
Exec 형식
ENTRYPOINT 의 Exec 형식 은 실행 할 명령 과 인 자 를 설정 하 는 동시에 CMD 를 통 해 추가 인 자 를 제공 할 수 있 습 니 다.
ENTRYPOINT 의 매개 변 수 는 항상 사용 되 고 CMD 의 추가 매개 변 수 는 용기 가 시 작 될 때 동적 으로 바 꿀 수 있 습 니 다.
예 를 들 어 아래 Dockerfile 세 션.
ENTRYPOINT ["/bin/echo", "Hello"]
CMD ["world"]
용기 가 docker run - it [p w picpath] 를 통 해 시 작 될 때 출력 합 니 다.
Hello world
docker run - it [p w picpath] 를 통 해 CloudMan 을 시작 하면 출력 합 니 다.
Hello CloudMan
셸 형식
ENTRYPOINT 의 Shell 형식 은 CMD 나 docker run 이 제공 하 는 인 자 를 무시 합 니 다.
최선 의 실천
여기까지 우 리 는 Dockerfile 을 작성 할 능력 을 갖 추 었 다.Docker Hub 에 공식 미 러 를 참고 하 는 Docker file 을 빠르게 파악 하 는 방법 을 추천 할 자신 이 없다 면.자, 우 리 는 자신의 p 를 만 드 는 법 을 배 웠 습 니 다.w_picpath 다음 절 은 p 를 어떻게 나 누 어 주 는 지 토론 합 니 다.w_picpath.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Weave Scope 다 중 호스트 모니터링 - 매일 5 분 씩 Docker 용기 기술 돌리 기 (81)이 host 아이콘 을 누 르 면 자세 한 정 보 를 표시 합 니 다. host 현재 자원 사용 현황 과 역사 곡선 이 한눈 에 들 어 옵 니 다.이외에 도 host 에서 실행 중인 프로 세 스 와 용기 목록 을 편...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.