티스토리 뷰
Docker 개념
Docker는 Linux Container에 Linux Application을 프로세스 격리기술을 사용해 더 쉽게 컨테이너로 실행하고 관리할 수 있게 해주는 오픈소스 프로젝트이다.
Docker Engine은 컨테이너를 생성하고 관리하는 주체로서 이 자체로 컨테이너를 제어할 수 있고 다양한 기능을 제공한다.
Virtual Machine과 Docker Container의 차이
기존에도 가상화 기술이 있었지만 도커가 이와 어떤 차이가 있는지 알아보자.
Virtual Machine
기존의 가상화 기술인 가상머신은 하이퍼바이저를 이용해 여러개의 운영체제를 하나의 호스트에서 생성해서 사용하는 방식으로 여러 개의 운영체제는 Guest OS라고 하며 각 Guest OS는 완전히 독립된 공간과 시스템 자원을 할당받아 사용한다.
시스템 자원을 가상화하고 독립된 공간을 생성하는 작업은 HyperVisor를 거치므로 성능 손실이 크고 가상머신은 GuestOS를 사용하기 위한 라이브러리, 커널 등을 포함하므로 배포할 때 용량이 크다.
Docker Container
가상화된 공간을 생성하기 위해 리눅스 자체 기능(chroot, namespace, cgroup)을 사용하여 프로세스 단위의 격리 환경을 만드므로 성능 손실이 없다.
가상머신과 달리 커널을 공유해서 사용하므로 컨테이너에는 라이브러리 및 실행파일만 있고 용량이 작다. 따라서 배포하는 시간이 가상머신에 비해서 빠르고 사용할 때의 성능 손실도 거의 없다.
Docker 구성요소
Docker client: 설치한 도커, build/pull/run 등의 도커 명령어를 수행
DOCKER_HOST: 도커에 띄워져 있는 서버, 컨테이너와 이미지를 관리한다.
Docker daemon: 도커 엔진
Registry: 외부 이미지 저장소, 다른 사람들이 공유한 이미지를 내부 도커 호스트에 pull 할 수 있다.
Docker image: Docker file을 build 명령어를 실행하여 도커 이미지를 만들 수 있다.
docker build -t [이미지명] .
Docker container: 도커 이미지를 생성한 후 컨테이너를 생성할 수 있고, 컨테이너에는 해당 이미지의 목적에 맞는 파일이 들어있는 호스트와 다른 컨테이너로부터 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 프로세스가 생성된다.
웹 서버 도커 이미지에서 여러 개의 도커 컨테이너를 생성하면 생성된 컨테이너 개수만큼 웹 서버가 생성되고 이 컨테이너들은 외부에 웹 서비스를 제공하게 된다.
'Docker & k8s' 카테고리의 다른 글
Docker 강의 목차 (0) | 2023.12.01 |
---|---|
[Docker 2판] 2장. 컨테이너 기술과 Docker의 개요 (0) | 2023.08.04 |
[Docker 2판] 1장. 시스템과 인프라 기초 지식 (0) | 2023.08.04 |
1. Docker 입문(개념, 설치 및 기본 명령어) (1) | 2023.08.03 |
1. Docker 개념 (0) | 2023.04.24 |