Docker
- Docker는 리눅스 상에서 컨테이너 방식으로 프로세스를 격리해서 실행하고 관리할 수 있도록 도와주며, 계층화된 파일 시스템에 기반해 효율적으로 이미지를 구축할 수 있도록 지원하는 플랫폼
장점
-
쉽고 빠른 실행 환경 구축
-
가볍고 빠른 실행 속도
-
하드웨어 자원 절감
-
공유 환경 제공
-
개발한 프로그램 그대로 배포 운영
Docker 아키텍쳐
Docker는 client-server 모델로 동작되고 기본 통신은 https 프로토콜을 사용
- Docker Daemon
- 컨테이너를 관리하는 서비스 데몬
- dockerd 데몬
- Docker Client
- 컨테이너를 관리하거나 실행하기 위해 Docker 데몬과 상호작용하는 도구
- Docker 클라이언트와 데몬은 RESTful API를 통해 내부적으로 통신
- docker command
- Docker Registry
- Docker Images
- 컨테이너 실행에 필요한 파일과 설정 값 등을 포함
- 변경할 수 없음
- 추가되고 변경되는 값들은 컨테이너에 저장
- Docker Hub에 등록하거나 Docker Registry를 구성하여 관리 가능
- Docker Containers
- 컨테이너는 이미지를 실행한 상태
- 같은 이미지에서 여러 개의 컨테이너 생성 가능
컨테이너
컨테이너는 호스트 운영체제 상에서 논리적으로 구역을 나눠 애플리케이션 동작을 위한 라이브러리와 애플리케이션의 실행 명령을 넣어 독립적으로 동작시키는 가상화 환경
Why Container?
- 소프트웨어 개발, 배포, 실행 방식이 달라져 웹이나 앱 기반의 애플리케이션은 짧은 라이프 사이클을 요구
- Docker는 컨테이너 가상화 기술을 사용하기 때문에 다른 가상화에 비해 가볍고 빠르게 동작하는 것이 특징
- 사용한 리소스만큼 요금이 부가되는 클라우드 환경에서는 비용 절감에도 도움
- Resources
- Portability
- Lightweight
- Deploying
컨테이너 isolate 지원
- PID
- USER
- IPC
- NETWORK
- UTS
- Cgroup
- Time
컨테이너로 구성한 서비스 실행
장점
- 구성
- 서비스 제공에 필요한 모든 요소를 사전에 구현
- 컨테이너를 실행할 호스트 구성과 상관없이 어떤 호스트에도 서비스 배포 가능
- 분리
- 각 컨테이너는 자신의 파일 시스템과 네트워크 인터페이스를 가지므로 동일 서비스를 여러 개 구성 가능
컨테이너와 컨테이너 이미지
Docker image
- Docker 컨테이너 생성하는 instruction을 포함하는 읽기 전용 템플릿
Docker Container
- 이미지의 실행 가능한 instants
- 컨테이너를 create, start, stop, delete 할 수 있음
컨테이너 Layer
-
읽기 전용 템플릿
-
컨테이너 인스턴스를 저장한 파일
-
컨테이너 파일시스템 -AUFS