Docker
도커는 애플리케이션의 실행에 필요한 환경을 하나의 이미지로 만들어, 해당 이미지를 사용하여 다양환 환경에서 독자적인 앱 실행 환경을 구축하고 운영하기 위한 오픈 소스 플랫폼이며 컨테이너의 가장 대표적인 구현체이다.
* 기업들은 어떻게 서비스를 효율적으로 운영 / 배포할 것인가?
- 초기
- 컴퓨터 + OS -> 애플리케이션을 구동하기 위해 필요한 라이브러리, 프레임워크를 OS에 설치해서 운영/배포
- 컴퓨터 + OS -> 애플리케이션을 구동하기 위해 필요한 라이브러리, 프레임워크를 OS에 설치해서 운영/배포
- 가상화 : 비용, 컴퓨팅 자원 효율성 증가
- 다수의 애플리케이션은 필요로 하는 라이브러리, 프레임워크가 다를 수 있다는 문제점을 해결
- 다수의 애플리케이션을 각 각의 가상화 머신에서 격리시켜 운영/배포
- Virtual Machine
- Host OS 위에 Hypervisor -> 각 Virtual Machine에 Geust OS 동작 -> Cpu, RAM, HDD... (Emulating)
- 각 각의 App이 격리된 환경에서 실행된다.
- Emulating으로 인해 성능의 효율성이 떨어진다.
- 자원의 오버헤드가 크다. -> 가상머신을 실행하기 위한 자원이 소모된다.
- 컨테이너 : 가상화보다 더 많은 효율성 증가
- OS 위에 Container Engine 동작
- HOST OS 입장에서 Container는 Process와 동일시 한다.
- 각 컨테이너는 동일한 Host OS 사용 -> Guest OS 사용 X
- chroot, namespace를 통한 Process Id, Network 분리가 가능하다.
- Container Orchestration System
- 여러 서버로 구성된 클러스터 환경에서 컨테이너를 관리하는 기술 <-> Container Engine은 하나의 서버위에서 하나의 컨테이너를 관리하는 기술
'Docker' 카테고리의 다른 글
[Docker] docker-compose (0) | 2022.11.14 |
---|---|
[Docker] Dockerfile (0) | 2022.11.11 |
[Docker] Docker 기본 (0) | 2022.11.10 |