Docker는 Linux 컨테이너 및 제어 그룹을 기반으로 합니다. 하지만 어떤 Linux 컨테이너 구현 Docker가 사용하고 있는지 알고 싶습니다. Linux의 기본/기본(LXC 실행 환경)을 사용합니까, 아니면 자체 구현이 있습니까?
답변1
Docker는 2014년에 LXC 사용에서 자체 libcontainer 라이브러리 사용으로 전환했습니다.
LXC는 (www.linuxcontainers.org) liblxc 라이브러리를 사용합니다.
두 라이브러리 모두 Linux 커널 네임스페이스 기술을 활용합니다. LWN에는 네임스페이스에 대한 여러 부분으로 구성된 블로그가 있습니다. https://lwn.net/Articles/531114/
답변2
Docker이든 LXC이든 컨테이너 기술의 핵심 구현은 동일합니다. 둘 다 Linux 커널 자체에서 제공됩니다. 커널은 네임스페이스(마운트, 네트워크, pid...), cgroup 등과 같은 다양한 메커니즘을 제공합니다. 따라서 docker와 lxc는 모두 이러한 기능을 사용하여 컨테이너 관리를 단순화하고 특정 사용 사례를 자동화합니다.
이는 Linux 커널에서 제공하는 기능이 없으면 docker나 lxc가 존재하지 않는다는 것을 의미합니다. lxc와 docker의 주요 차이점은 어떤 Linux 커널 기능/API 세트가 사용되는지, 어떤 워크플로 및 사용 사례가 지원되는지입니다.