컨테이너 내부 원리 · 네임스페이스 — 무엇을 볼 수 있는가 · 퀴즈
퀴즈: 네임스페이스
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
호스트와 alpine 컨테이너의 네임스페이스 inode 를 비교했더니 pid 와 net 은 다른데 user 와 time 은 같았습니다. 가장 정확한 해석은?
- 컨테이너가 제대로 격리되지 않은 비정상 상태다
- user 네임스페이스는 커널이 지원하지 않는다
- time 네임스페이스가 user 네임스페이스를 대체했다
- 도커가 기본적으로 유저 네임스페이스를 쓰지 않기 때문에 나타나는 정상 동작이다
컨테이너 두 개가 각각 자기 안에서 80번 포트를 열었는데 충돌하지 않았습니다. 이유는?
- net 네임스페이스가 포트 번호 공간까지 분리하므로 서로 다른 공간의 80번이다
- 도커가 포트를 자동으로 바꿔 준다
- 80번은 예약 포트라 중복이 허용된다
- 커널이 컨테이너마다 별도의 TCP 스택을 컴파일한다
쿠버네티스 파드에서 pause 컨테이너의 역할을 가장 정확히 설명한 것은?
- net/ipc/uts 네임스페이스를 보유하고 앱 컨테이너들이 그 네임스페이스에 합류한다
- 앱 컨테이너의 로그를 모아 전송한다
- 앱 컨테이너가 죽었을 때 대신 트래픽을 받는다
- 파드의 cgroup 한도를 앱 컨테이너에 배분한다
다음 중 리눅스 네임스페이스가 분리하는 대상이 **아닌** 것은?
- 마운트 테이블
- hostname
- System V IPC
- 프로세스가 쓸 수 있는 메모리 총량
컨테이너 안에서 `readlink /proc/self/ns/net` 이 호스트와 같은 값을 냈습니다. 무엇을 의미합니까?
- 컨테이너가 실행에 실패했다
- readlink 출력은 원래 항상 같다
- 그 컨테이너가 호스트의 네트워크 네임스페이스를 그대로 쓰고 있다
- 네트워크 네임스페이스는 inode 를 가지지 않는다
컨테이너의 주 명령을 PID 1 로 두는 구조 때문에 생기는 실질적 부담은?
- PID 1 은 신호 기본 동작이 적용되지 않으므로 핸들러를 직접 등록해야 하고, 고아 프로세스의 종료 상태도 거둬야 한다
- PID 1 은 CPU 우선순위가 가장 높아 다른 프로세스를 굶긴다
- PID 1 은 파일을 열 수 없다
- PID 1 은 네트워크 소켓을 만들 수 없다