LabHub

도커 기초 · 실행과 수명주기 · 퀴즈

퀴즈: 실행과 수명주기

LabHub 에서 이어서 보기

문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. 컨테이너 종료코드가 137 입니다. 다음 중 **불가능한** 원인은?

    1. stop 유예 시간이 지나 SIGKILL 되었다
    2. cgroup 메모리 한도 초과로 OOM 킬러가 죽였다
    3. 누군가 SIGKILL 을 직접 보냈다
    4. 애플리케이션이 `exit(137)` 을 호출했다
  2. `CMD npm start` 를 `CMD ["node","server.js"]` 로 바꿨더니 종료가 10초에서 0.3초로 줄었습니다. 직접적인 이유는?

    1. PID 1 이 셸/래퍼가 아니라 실제 서버 프로세스가 되어 SIGTERM 이 도달했다
    2. node 실행이 npm 실행보다 원래 빠르다
    3. exec 형식이 신호를 두 번 보낸다
    4. JSON 배열이 유예 시간을 줄인다
  3. 엔트리포인트 스크립트의 마지막 줄을 `exec "$@"` 로 쓰는 이유는?

    1. 넘길 수 있는 인자 수를 늘리려고
    2. 스크립트 프로세스를 대상 프로세스로 **대체**해 대상이 PID 1 이 되게 하려고
    3. 스크립트의 종료코드를 언제나 0 으로 만들려고
    4. 설정한 환경변수를 그대로 전달하려고
  4. PID 1 에 init 성격의 프로세스를 두라고 권하는 이유 중 가장 정확한 것은?

    1. 고아 프로세스를 입양해 종료 상태를 거둬야 좀비가 쌓이지 않기 때문
    2. 자식들의 로그를 한곳에 모아 주기 때문
    3. 프로세스 메모리를 아껴 주기 때문
    4. 컨테이너 재시작을 빠르게 하기 때문
  5. `docker create` 와 `docker run` 을 굳이 나눠 둔 이유로 가장 적절한 것은?

    1. 컨테이너의 메타데이터(설정·스냅샷)와 실행 상태(프로세스)가 별개의 개념이기 때문
    2. 두 방식 사이에 성능 차이가 있어서
    3. create 로 먼저 만들어 두는 편이 실행보다 안전해서
    4. 네트워크를 먼저 붙여야 하는 순서 때문
  6. 재시작 정책 `on-failure:3` 이 의미하는 것은?

    1. 3초마다 재시작
    2. 종료코드가 0 이 아닐 때만, 최대 3번까지 재시작
    3. 3번 실패하면 영구 정지
    4. 항상 재시작하되 3분간만