도커 기초 · 실행과 수명주기 · 퀴즈
퀴즈: 실행과 수명주기
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
컨테이너 종료코드가 137 입니다. 다음 중 **불가능한** 원인은?
- stop 유예 시간이 지나 SIGKILL 되었다
- cgroup 메모리 한도 초과로 OOM 킬러가 죽였다
- 누군가 SIGKILL 을 직접 보냈다
- 애플리케이션이 `exit(137)` 을 호출했다
`CMD npm start` 를 `CMD ["node","server.js"]` 로 바꿨더니 종료가 10초에서 0.3초로 줄었습니다. 직접적인 이유는?
- PID 1 이 셸/래퍼가 아니라 실제 서버 프로세스가 되어 SIGTERM 이 도달했다
- node 실행이 npm 실행보다 원래 빠르다
- exec 형식이 신호를 두 번 보낸다
- JSON 배열이 유예 시간을 줄인다
엔트리포인트 스크립트의 마지막 줄을 `exec "$@"` 로 쓰는 이유는?
- 넘길 수 있는 인자 수를 늘리려고
- 스크립트 프로세스를 대상 프로세스로 **대체**해 대상이 PID 1 이 되게 하려고
- 스크립트의 종료코드를 언제나 0 으로 만들려고
- 설정한 환경변수를 그대로 전달하려고
PID 1 에 init 성격의 프로세스를 두라고 권하는 이유 중 가장 정확한 것은?
- 고아 프로세스를 입양해 종료 상태를 거둬야 좀비가 쌓이지 않기 때문
- 자식들의 로그를 한곳에 모아 주기 때문
- 프로세스 메모리를 아껴 주기 때문
- 컨테이너 재시작을 빠르게 하기 때문
`docker create` 와 `docker run` 을 굳이 나눠 둔 이유로 가장 적절한 것은?
- 컨테이너의 메타데이터(설정·스냅샷)와 실행 상태(프로세스)가 별개의 개념이기 때문
- 두 방식 사이에 성능 차이가 있어서
- create 로 먼저 만들어 두는 편이 실행보다 안전해서
- 네트워크를 먼저 붙여야 하는 순서 때문
재시작 정책 `on-failure:3` 이 의미하는 것은?
- 3초마다 재시작
- 종료코드가 0 이 아닐 때만, 최대 3번까지 재시작
- 3번 실패하면 영구 정지
- 항상 재시작하되 3분간만