직접 만들며 알게 된 Docker의 이상한 설계들
Key Point
직접 컨테이너 런타임을 만들면서 발견한 Docker의 설계 결정들을 알면, 우리가 매일 쓰는 도구가 왜 이렇게 복잡한지, 그리고 그 복잡성이 어디서 비롯됐는지 이해할 수 있다.
핵심 요약
- 컨테이너는 VM과 달리 특별한 제한이 적용된 일반 프로세스이며, /proc에서 찾을 수 있다.
- 컨테이너 기능은 단일 리눅스 기능이 아니라 Namespaces, cgroups, 네트워킹 등 5개의 커널 기능을 조합한 것이다.
- 이미지는 폴더일 뿐이며 Docker는 chroot나 pivot_root를 사용해 새 루트 디렉터리로 설정한다.