Docker 란?
Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼
- Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함
- Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장
Docker 작동 방식
Docker는 컨테이너를 위한 운영 체제
가상 머신이 서버 하드웨어를 가상화하는 방식과 비슷하게(직접 관리해야 하는 필요성 제거) 컨테이너는 서버 운영 체제를 가상화
Container VS VM ?
Container의 장점
- VM 보다 볼륨이 작다.
- 위의 그림에서 보이듯이, Container는 Host의 커널을 공유한다. 따라서, 가상화된 하드웨어위에 OS가 올라가는 VM보다 볼륨이 작다.
- 빠르다.
- I/O가 발생하는 통로가 VM이 더 많을 수 밖에 없다. VM이 처리한 I/O를 Host OS의 커널에서 다시 받아 자신의 드라이버에 맞게 처리해줘야 한다. Container의 경우 커널을 공유하므로 들어온 I/O가 보다 쉽게 처리된다.
- 라이프사이클
- 개발 환경 내에서 image 만들어 배포하고 pull 받아서 다시 올리면 끝. 매우 편리하게 서비스를 관리할 수 있다.
- 여러대의 host에서 실행중인 container를 관리할 수 있는 오케스트레이션 제공
→ MicroService로 발전할 수 있는 토대를 마련하고 적용해 나갈 수 있다.
VM의 장점
- 보안
- Container가 host 커널을 공유한다는 것은 container가 뚫리면 바로 host OS의 커널이 위험해질 수 있다. 동시에 호스트 커널까지 오지 않더라도 커널이 공격당하면, 커널을 공유한다는 개념 때문에 모든 Container가 위험해질 수 있다. 반면, VM의 경우 완벽하게 다른 VM이나 host가 보호된다.
- 멀티 OS
- 커널을 공유한다는 이유로 Container에서 할 수 없는 일이 바로 Host OS와 다른 OS를 올릴 수 없다는 점이있다.
Reference
'Computer Science' 카테고리의 다른 글
SSL이란? (0) | 2024.02.19 |
---|---|
HLS(HTTP 라이브 스트리밍)란? (0) | 2023.12.28 |
서버 이중화란? (HA, 클러스터링, Fail-Over) (0) | 2023.10.08 |