반응형
개요
종종 컨테이너 디버깅 할 때, 의도한 entrypoint를 실행하지 않으면서 아무것도 실행하지 않는 상황이 필요합니다. 이런 상황에서 좋은 디버깅 방법을 소개합니다.
영상: https://youtu.be/EQ0YBv0w0Js
예제
예제는 간단한 파이썬 애플리케이션을 사용합니다.
예제 git링크: https://github.com/choisungwook/debug_container_with_sleep
디버깅 방법
entrypoint를 오버라이딩하는 방법으로 아무것도 실행하지 않는 상태(정확히 말하면 무한 sleep)로 컨테이너를 실행할 수 있습니다.
컨테이너가 실행되면 entrypoint에 정의된 명령어를 실행합니다. entrypoint를 오버라이딩은 컨테이너에 이미 설정된 entrypoint명령어를 변경할 수 있습니다. 컨테이너는 해당 명령어를 실행합니다. 보통 아무런 행동도 하지 않기 위해 리눅스 명령어인 sleep함수를 사용합니다. 그리고 컨테이너가 종료되지 않도록 while문으로 sleep함수를 무한히 실행하게 합니다. 아래 예제는 2초마다 sleep함수를 실행합니다.
docker run --rm -d \
--entrypoint "/usr/bin/env" \
test:v1 /bin/bash -c 'while true;echo sleep;do sleep 2; done'
쿠버네티스에서는 command와 args를 오버라이딩해서 해결할 수 있습니다.
apiVersion: v1
kind: Pod
metadata:
name: debug-demo
namespace: default
labels:
app: debug-demo
spec:
containers:
- name: main
image: "test:v1"
command:
- "/usr/bin/env"
args:
- "/bin/bash"
- "-c"
- "while true;do echo sleep; sleep 2; done"
restartPolicy: Always
반응형
'전공영역 공부 기록' 카테고리의 다른 글
알고리즘 공부 6일차 (0) | 2022.06.14 |
---|---|
kubernetes deployment 배포버전 관리 (0) | 2022.05.22 |
ubuntu에서 python venv패키지 사용할때 주의 (0) | 2022.05.21 |
환경변수로 aws프로파일 오버라이딩 (0) | 2022.05.12 |
find 명령어로 마지막 수정시간이 하루초과인 파일 삭제 (0) | 2022.05.12 |