Kubernetes: 용기 설정 을 시작 할 때 실행 할 명령 및 입력
DockerFile
CMD
ENTRYPOINT
CMD 와 ENTRYPOINT 우선 순위
CMD 와 ENTRYPOINT 사용 제안:
Pod 생 성 시 명령 및 입 참 설정
셸 을 통 해 명령 을 수행 합 니 다.
Docker 와 Kubernetes 의 대응 관계
DockerFile
CMD
CMD 명령 은 Dockerfile 에서 하나만 허용 합 니 다. 여러 개가 나타 나 면 마지막 CMD 명령 으로 덮어 씁 니 다.
CMD 명령 은 주로 용기 가 실 행 될 때 기본 값 을 제공 합 니 다. 이 기본 값 은 명령 을 실행 할 수도 있 고 매개 변수 만 설정 할 수도 있 습 니 다. 이 는 ENTRYPOINT 와 결합 하여 사용 해 야 합 니 다.
CMD 명령 은 세 가지 설정 형식 이 있 습 니 다.
CMD ["executable", "param 1", "param 2"] exec 실행, 추천 방식 사용;
CMD command param 1 param 2 는/bin/sh 에서 실행 되 며 상호작용 이 필요 한 응용 프로그램 에 제공 합 니 다.
CMD ["param 1", "param 2"] 가 ENTRYPOINT 에 제공 하 는 기본 매개 변수;
CMD 예시:
CMD ["/usr/bin/wc","--help"]
CMD echo "This is a test."| wc -
ENTRYPOINT
ENTRYPOINT: 용기 가 시 작 된 후 실행 되 는 명령 을 설정 하고 docker run 이 제공 하 는 매개 변 수 를 덮어 쓸 수 없습니다.Dockerfile 마다 하나의 ENTRYPOINT 만 있 을 수 있 습 니 다. 여러 개 를 지정 할 때 마지막 하나만 효과 가 있 습 니 다.
ENTRYPOINT 명령 설정 형식
ENTRYPOINT ["executable", "param1", "param2"] (exec 형식 추천 하 다
ENTRYPOINT command param1 param2 (shell 형식
셸 형식 은 CMD 를 사용 하거나 명령 행 인 자 를 실행 하 는 것 을 방지 하지만 ENTRYPOINT 는/bin/sh - c 의 하위 명령 으로 시작 되 고 신 호 를 전달 하지 않 는 것 이 단점 입 니 다.이 는 실행 가능 한 파일 이 용기 의 PID 1 이 아니 라 유 닉 스 신 호 를 받 지 않 기 때문에 실행 가능 한 파일 은 docker stop 에서 SIGTERM 으로 받 지 않 습 니 다.
ENTRYPOINT 예시
ENTRYPOINT ["top", "-b"]
ENTRYPOINT exec top -b
CMD 와 ENTRYPOINT 우선 순위
No ENTRYPOINT
ENTRYPOINT exec_entry p1_entry (shell 형식
ENTRYPOINT [“exec_entry”, “p1_entry”] (exec 형식
NO CMD
불허
/bin/sh -c exec_entry p1_entry
exec_entry p1_entry
CMD [“exec_cmd”, “p1_cmd”] (exec 형식
exec_cmd p1_cmd
/bin/sh -c exec_entry p1_entry
exec_entry p1_entry exec_cmd p1_cmd
CMD [“p1_cmd”, “p2_cmd”] 매개 변수 형식
p1_cmd p2_cmd
/bin/sh -c exec_entry p1_entry
exec_entry p1_entry p1_cmd p2_cmd
CMD exec_cmd p1_cmd (shell 형식
/bin/sh -c exec_cmd p1_cmd
/bin/sh -c exec_entry p1_entr
exec_entry p1_entry/bin/sh -c exec_cmd p1_cmd
CMD 와 ENTRYPOINT 사용 제안:
(1) CMD 명령 은 image 의 모든 응용 을 수행 합 니 다.CMD 는 보통 CMD ["executable", "param 1", "param 2"...] 형식 으로 실 행 됩 니 다.따라서 이미지 가 아파 치, 레일 스 와 같은 서 비 스 를 제공 하 는 데 사용 된다 면.CMD 와 같은 명령 을 수행 해 야 합 니 다.
(2) 다른 케이스 에서 CMD 는 특정한 셸 을 수행 하 는 데 사용 된다. 예 를 들 어 bash, python, perl 등 이다.예 를 들 어 CMD ["perl", "- de0"], CMD ["python"] , or CMD [“php”, “-a”].
(3) docker run - it python 을 실행 할 때 특정한 셸 에 들 어 갈 수 있 습 니 다.
(4) CMD 는 항상 ENTRYPOINT 에 맞 춰 사용한다.사용자 가 ENTRYPOINT 의 특성 을 잘 알 고 있다 는 것 을 확인 하지 않 는 한아니면 ENTRYPOINT 를 미리 설정 하 는 게 좋 을 것 같 아 요.
Pod 생 성 시 명령 및 입 참 설정
Pod 를 만 들 때 다음 용기 에 시작 할 때 실행 할 명령 과 참 조 를 설정 할 수 있 습 니 다.명령 을 설정 하려 면 설정 파일 에 작성 하 십시오.
command
필드 에서 명령 의 참 여 를 설정 하려 면 설정 파일 에 작성 하 십시오. args
필드 아래.Pod 생 성 이 완료 되면 이 명령 과 입 참 을 변경 할 수 없습니다.셸 을 통 해 명령 을 수행 합 니 다.
셸 스 크 립 트 에서 명령 을 실행 해 야 할 때 가 있 습 니 다.예 를 들 어 실행 할 명령 은 여러 명령 으로 조합 되 거나 셸 스 크 립 트 일 수 있 습 니 다.이 때 셸 에서 명령 을 수행 할 수 있 습 니 다.
command: ["/bin/sh"]
args: ["-c", "while true; do echo hello; sleep 10;done"]
Docker 와 Kubernetes 의 대응 관계
묘사 하 다.
Docker 필드 이름
Kubernetes 필드 이름
용기 실행 명령
Entrypoint
command
명령 에 전 달 된 인자
Cmd
args
기본 Entrypoint 와 Cmd 를 덮어 쓰 려 면 다음 규칙 을 따라 야 합 니 다.
command
혹은 args
그러면 Docker 미 러 가 자체 적 으로 가 져 온 명령 과 입 참 을 사용 합 니 다.command
근 데 설정 이 없어 요. args
용기 가 시 작 될 때 이 명령 만 실 행 됩 니 다. Docker 미 러 에 있 는 자체 명령 과 가입 은 무시 되 었 습 니 다.args
그러면 Docker 미 러 에 있 는 자체 명령 은 이 새 입 참 을 실행 할 때의 입 참 으로 사용 합 니 다.command
... 과 args
그러면 Docker 미 러 에 있 는 자체 명령 과 가입 은 무시 되 었 습 니 다.용기 가 시 작 될 때 설정 에 설 치 된 명령 만 실행 하고 설정 에 설 치 된 입 참 을 명령 의 입 참 으로 사용 합 니 다.아래 표 는 각종 설정 장면 을 포함한다.
미 러 엔트리 포인트
미 러 Cmd
용기 명령
용기 args
명령 실행
[/ep-1]
[foo bar]
[ep-1 foo bar]
[/ep-1]
[foo bar]
[/ep-2]
[ep-2]
[/ep-1]
[foo bar]
[zoo boo]
[ep-1 zoo boo]
[/ep-1]
[foo bar]
[/ep-2]
[zoo boo]
[ep-2 zoo boo]
참조 링크:
https://kubernetes.io/zh/docs/tasks/inject-data-application/define-command-argument-container/#%E6%B3%A8%E6%84%8F
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.