Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- IAM
- Service
- asgi
- Deployment
- github
- FastAPI
- leetcode
- Django
- AWS
- EKS
- ebs
- YAML
- 자바스크립트
- Python
- IAC
- Kubernetes
- dockerfile
- EC2
- intervals
- POD
- ansible
- elasticsearch
- WSGI
- event loop
- asyncio
- docker
- 쿠버네티스
- K8S
- terraform
- kernel
Archives
- Today
- Total
궁금한게 많은 개발자 노트
[ Docker ] Docker Image가 컨테이너에서 실행 될 때 수행되는 명령어 본문
Dockerfile 작성 시 작성 된 Dockerfile에 의해 생성되는 Docker Image가 컨테이너에서 실행 될 때 수행되는 명령어를 정의하기 위해 ENTRYPOINT, CMD를 사용하곤 합니다.
이 때, ENTRYPOINT와 CMD의 차이점은 이전에 작성한 블로그에서 확인할 수 있듯 항상 수행되어야만 하는 명령어는 ENTRYPOINT에 작성하고 해당 명령어의 인자 또는 docker run명령에 의해 컨테이너가 실행될 때 인자로 주어지는 값에 의해 대체 될 수 있는 값은 CMD로 작성합니다.
하지만, Dockerfile작성 시에 ENTRYPOINT로 지정한 명령어도 대체될 수 있습니다.
k8s환경에서 해당 Docker Image를 통해 Pod내부에서 동작하는 Container들을 정의할 때, command와 args를 사용하여 컨테이너 실행 시 수행 될 명령어들을 정의할수 있습니다.
이를 통해 Dockerfile에 기술 된 ENTRYPOINT와 CMD는 command와 args에 의해 덮어써지게 됩니다.
The command and arguments that you define in the configuration file override the default command and arguments provided by the container image. If you define args, but do not define a command, the default command is used with your new arguments.
Note: The command field corresponds to entrypoint in some container runtimes.
아래 표에서 확인할 수 있듯 컨테이너에서 실제 수행되는 명령어는 Dockerfile에서는 ENTRYPOINT로 정의하고, 쿠버네티스 Pod생성 시에는 command로 전달할 수 있습니다. 더 뒷 단계에서 정의되는 command에 의해 ENTRYPOINT는 대체되어 질수 있고, 이와 마찬가지로 CMD는 args에 의해 대체될 수 있습니다.
아래에 다양한 예시를 통해 이해를 도울 수 있을 것 같습니다.
'DevOps' 카테고리의 다른 글
[ k8s ] Kubernetes Pod에 AWS S3 마운트 (6) | 2024.01.26 |
---|---|
[ k8s ] Static Pod란 (0) | 2024.01.23 |
[ IaC ] Terraform init -reconfigure vs -migrate-state (2) | 2024.01.09 |
[ MLOps ] MLOps란? (0) | 2023.11.23 |
[ ES ] Kibana index pattern 생성 안되는 문제 (0) | 2023.11.23 |
Comments