
Docker는 컨테이너 기술을 사용해서 애플리케이션의 실행 환경을 구축 및 운용하기 위한 플랫폼이다.
컨테이너란?
주요 특징 및 장점
경량성: 컨테이너는 가상 머신(VM)에 비해 훨씬 가볍습니다. 컨테이너는 게스트 운영 체제를 필요로 하지 않으며,
호스트 시스템의 커널을 공유합니다. 이로 인해 시작 시간이 짧고 오버헤드가 적습니다.
이식성: 컨테이너는 애플리케이션과 그 종속성을 함께 패키지화하기 때문에, 어떤 환경에서든 동일하게 실행될 수 있습니다.
격리성: 각 컨테이너는 자체 파일 시스템을 가지며, 프로세스, 메모리, 네트워크 등에서 다른 컨테이너와 독립적으로 실행됩니다.
이는 애플리케이션 간의 충돌을 방지하고 보안을 강화합니다.
자동화된 배포: 컨테이너는 CI/CD(지속적 통합 및 지속적 배포) 파이프라인과 잘 통합되어,
애플리케이션의 자동화된 테스트 및 배포를 용이하게 합니다.
사용 사례
도커는 컨테이너 기술 그자체 이다. 그럼 도커말고 또 컨테이너화 하는 기술이 있을까?
호스트 OS상에 논리적인 구획(컨테이너)를 만들고
애플리케이션을 작동시키기위해 필요한 라이브러리나 소스코드 등을 하나로 모아
마치 별도의 서버인 것처럼 사용할수 있게한것.
호스트 OS의 리소스를 논리적으로 분리시키고 여러개의 컨테이너가 공유하여 사용한다.
만약 컨테이너 기술을 사용하지 않으면 데이터 저장하는 디렉토리 공유하게 되고
서버에 설정된 동일한 IP주소로 통신한다.
컨테이너 기술을 사용한다면 OS, 디렉토리 ,IP 주소 등과 같은 시스템 자원을
마치 각 애플리케이션이 점유하고 있는 것처럼 보이게 할수있다.
서버 가상화 기술 이모저모
- 호스트형 서버 가상화
- 하드웨어 상에 베이스가 되는 호스트 OS설치하고
- 호스트 OS에 가상화 소프트웨어를 설치한후,
- 이 가상화 소프트웨어 상에서 게스트OS를 작동시키는 기술.
- Oracle VM VirtualBox, VMware Workstation player ...
- BUT 호스트 OS사에서 다른 게스트OS를 움직이고 있기 때문에 오버헤드가 커진다.
- 하이퍼바이저형 서버 가상화
- 하드웨어 상에 가상화를 전문으로 수행하는 소프트웨어인 '하이퍼바이저'를 배치 해서 하드웨어와 가상화 환경을 제어 한다.
- Microsoft Windows Server 의 Hyper-V ...
- 호스트 OS 없이 하드웨어를 직접 제어하기 때문에 자원을 효율적으로 사용할 수 있따.
- 단 가상환경마다 별도의OS가 부팅 되므로 시작에 걸리는 오버헤드가 있다.
- 펌웨어로 구축하는 경우가 많다
- 펌웨어?
(펌웨어(Firmware)는 하드웨어를 제어하고 특정 기능을 실행하기 위해 내장된 소프트웨어 프로그램 또는 코드입니다. 펌웨어는 일반적으로 하드웨어에 고정되어 있으며, 하드웨어가 의도한 대로 작동하도록 초기화, 관리, 제어하는 역할을 합니다.)