Docker - Container

어쩌다코딩·2023년 5월 29일
0

Docker

목록 보기
1/4
post-thumbnail

Docker는 애플리케이션 구축, 구현 및 테스트를 위해, 격리된 가상화 환경을 생성하는 서비스형 플랫폼을 말합니다. 여기서 말하는 격리된 가상화된 환경이란 무엇일까요?

격리된 가상화된 환경이란, OS를 가상화 시키는 것이 아닌 프로세스를 분리하여 독립적으로 실행할 수 있게 해주는 환경을 말하며, 여기선 Container라고 부릅니다.

Container의 대표적인 예로는 LXC(Linux Container)가 있습니다. LXC는 물리적 자원을 관리하는 Kernel space와 User process(Application)을 실행하는 User space로 나뉩니다.

kernel 내부에서는 CPU, Memory를 할당해주는 Cgroups와 namespace를 결합하여 가상화 머신을 시작할 필요없이 고립된 환경을 제공하여 독립적으로 이를 활용할 수 있게 해줍니다.

Docker 또한, 이러한 Linux Container를 기반으로 구축되었으며 Cgroups 및 namespace와 같은 커널의 기능을 사용하여 프로세스를 분리하여 독립적으로 실행할 수 있게 해줍니다.

하지만, Docker는 전통적인 Linux 컨테이너와는 다릅니다. LXC는 경량의 가상화 방법으로 유용했지만 개발자에게 뛰어난 사용자 환경을 제공하지는 못했습니다.

init system을 사용하여 전체 애플리케이션을 하나로 실행할 수 있는 LXC와는 다르게 Docker는 애플리케이션을 개별 프로세스로 세분화시킬 수 있습니다. 이렇게 해줌으로써 Docker는 컨테이너 생성 및 구축, 이미지 전송, version을 관리하는데 좀 더 편리하게 사용할 수 있다는 장점을 가지고 있습니다.

profile
차근차근 배워나가자

0개의 댓글