도커는 애플리케이션을 컨테이너라는 표준화된 단위로 패키징하고 실행할 수 있게 해주는 플랫폼(Claude)
도커는 애플리케이션을 컨테이너라는 단위로 패키징, 배포 및 실행할 수 있도록 해주는 오픈 소스 플랫폼(GPT)
실행 환경의 일관성과 이식성을 위해서 도커를 사용.
실제로 도커의 개발자들이 Pycon에서
컨테이너는 코드와 모든 종속성을 패키징하는 표준화된 소프트웨어 단위로, 애플리케이션이 한 컴퓨팅 환경에서 다른 환경으로 빠르고 안정적으로 실행될 수 있게 합니다. 도커 컨테이너 이미지는 가볍고, 독립적이며, 실행 가능한 소프트웨어 패키지로 애플리케이션 실행에 필요한 모든 것을 포함합니다: 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정을 포함합니다.
cgroups, Namespaces 이 두 가지에 대해 이해해야한다.
Unix V7에서 chroot 도입(1979)
Unix v7 : 유닉스의 버전 7

chroot : change root의 약자로 당시에 해커들로 부터 시스템을 보호하기 위해 환경을 분리하는데 많이 사용됨.

FreeBSD Jails의 등장(2000)
실제로 container의 뼈대가 들어나기 시작.
FreeBSD : 유닉스 계열의 무료 Opensource OS
chroot의 한계를 극복하고 더 강력한 격리 기능을 제공하기 위해 개발됨.
Jail의 특징
Jail은 Sandbox이 되어, 다른 jail에 접근이 안되며, jail에 할당되지 않은 외부의 파일과 리소스에 접근할 수 없음.
각 Jail들은 독립된 권한을 가짐.
빠른 속도
계층성이 존재
커널과 장치에 대한 접근 제한

Jail을 복사하거나 스냅샷을 찍을 수 있음.
Virtuozzo와 Linux VServer등장(2001)
Virtuozzo는 현재는 AWS와 같이 Cloud Platform을 주로 다루는 회사가 되었지만, 2001년에는 하나의 물리적 서버를 여러개의 독립적인 Virtual Private Server(VPS) 서버로 분할하여 운영할 수 있도록 도와주는 솔루션을 주로 제공함.
는 리눅스 서버에서 효율적인 자원 분할과 격리를 위한 기술.
리눅스 환경에서 다수의 가상 환경을 운영할 수 있도록 설계됨.
하나의 물리적 서버를 저비용과 경량화된 가상화방법으로 여러 개의 독립적인 서버 환경을 제공.
특히 Kernel Level Isolation을 사용함.

| FreeBSD | Virtuozzo | Linux VServer | |
|---|---|---|---|
| 철학 | 컴퓨터 하나를 여러개의 독립된 작은 시스템으로 나누기 | 물리적 서버를 각자 독립된 서버처럼 사용 | 하나의 시스템을 여러 개의 독립된 컨텍스트로 분리 |
| 목표 | 보안 격리에 중점 | 서버 가상화 및 호스팅 환경의 효율성 극대화 | 리눅스 시스템의 파티셔닝 |
Oracale Solaris
cgroups(control groups)
원래 이름은 프로세스 컨테이너였지만, 컨테이너 이름 충돌을 바꾸기 위해 이름을 변경. (.feat 구글 개발-> 해당 내용이 Linux Kernel version 2.6.24에 도입됨)
cgroups은 사용자가 여러명인 서버에서 자원 관리의 필요성에 비롯됨.
도커에서 컨테이너의 격리환경을 만들기 위해 cgroups과 namespace
cgroups : 자원에 대한 제어를 가능하게 해주는 리눅스 커널의 기능
cgroups의 구조


namespace