도커 컨테이너는 한 개당 하나의 애플리케이션을 의미한다. 컨테이너는 여러 개를 띄울 수 있으며, 각각의 컨테이너는 완전하게 독립된 공간으로 분리되어 운영된다. (cpu, memory, network, disk, userid, hostname 등 어플리케이션을 구성하는 요소들이 독립적으로 구성 됨, 여러 개의 컨테이너는 한 개의 커널을 공유한다.)
Docker Host: 현재 도커 데몬이 동작되고 있고 리눅스 커널이 있는 시스템. (도커가 컨테이너를 실행 할 수 있는 플랫폼을 만들어 놓은 것) 이 시스템 위에서 여러 개의 도커 컨테이너가 실행 된다. (도커 호스트 입장에서 컨테이너는 n개의 프로세스로 생각함)
여러 개의 레이어를 구성하여 하나의 컨테이너(애플리케이션) 가 잘 실행 될 수 있도록 구성된 이미지들의 조합.
(컨테이너 이미지 예시)
컨테이너 이미지는 하드디스크에 파일 형태로 존재하며, 각각의 레이어 별로 파일이 존재한다. (read only)
위에서 살펴본 도커 컨테이너 이미지를 실행 시키면 도커 호스트에 도커 데몬이 실행 중인 환경에서 실행 명령을 통해 컨테이너 이미지는 메모리에 하나의 어플리케이션 프로세스로 동작하게 된다.
docker pull 명령어로 container image를 다운 받게되면 리눅스 기준으로 /var/lib/docker/overlay2 폴더에 파일로 쌓인다.
- Docker Host(Linux Kernel): Docker Demon이 동작되고 있는 시스템
- Docker Demon: systemctl start docker를 통해 실행된 도커
- Docker Client Command: Docker 작업 명령
- Docker Hub: 도커 이미지파일 저장소
- Container Images: 이미지 레이어 별로 따로 저장된 파일
- Container: 실행된 컨테이너 이미지 로써 하나의 프로세스 형태로 동작