내일배움캠프 D+63

유제협·2021년 11월 15일
0

Docker?

정의

Docker는 애플리케이션을 개발, 배송 및 실행을 해주는 개방형 플랫폼이다.

특징

애플리케이션을 인프라에서 분리할 수 있으므로 소프트웨어를 빠르게 제공할 수 있다.
애플리케이션을 관리하는 것과 동일한 방식으로 인프라를 관리할 수 있다.
Container 라는 격리된 환경에서 애플리케이션을 패키징하고 실행할 수 있는 기능을 제공한다.

Container?

정의

컨테이너는 이미지의 실행 가능한 인스턴스

특징

Docker API 또는 CLI를 사용하여 컨테이너를 생성, 시작, 중지, 이동 또는 삭제할 수 있다.
Container를 하나 이상의 네트워크에 연결하거나, 스토리지를 연결하거나, 현재 상태를 기반으로 새 이미지를 생성할 수도 있다.
기본적으로 Container는 다른 Container 및 해당 HOST System과 비교적 잘 격리되어 있다.
Container의 네트워크, 저장소 또는 기타 기본 하위 시스템이 다른 Container나 HOST System과 얼마나 격리되었는지 제어할 수 있다.
Container는 Image와 Container를 만들거나 시작할 때 제공하는 구성 옵션으로 정의된다.
Container가 제거되면 영구 저장소에 저장되지 않은 상태 변경 사항은 사라진다.

이전 방식과 비교

전통적인 배포시대 (Traditional Deployment)

물리서버에서 실행 : 하나의 물리서버에 여러개의 애플리케이션을 실행하여 리소스를 많이 차지하는 인스턴스가 존재 할 경우 그 외의 애플리케이션들의 성능이 저하될 우려가 있다.
- 해결책으로는 여러 물리 서버를 사용하면 되지만 비용이 많이 든다는 단점이 있다.

가상화된 배포 시대 (Virtualized Deployment)

단일 물리 서버의 CPU에서 여러 가상 시스템(VM)을 실행할 수 있게 한다.
가상화를 사용하면 VM간에 애플리케이션을 격리하고 애플리케이션의 정보를 다른 애플리케이션에서 자유롭게 액세스 할 수 없으므로, 일정 수준의 보안성을 제공할 수 있다.

컨테이너 개발 시대 (Container Deployment)

컨테이너는 VM과 유사하지만 격리 속성을 완화하여 애플리케이션 간에 운영체제(OS)를 공유한다. 그러므로 컨테이너는 가볍다고 여겨진다.
VM과 마찬가지로 컨테이너에는 자체 파일 시스템, CPU 점유율, 메모리, 프로세스 공간 등이 있다. 기본 인프라와의 종속성을 끊었기 때문에, 클라우드나 OS 배포본에 모두 이식할 수 있다

[출처]
Docker, Container
https://docs.docker.com/get-started/overview/
이전 방식과 비교
https://kubernetes.io/ko/docs/concepts/overview/what-is-kubernetes/#%EC%97%AC%EC%A0%95-%EB%8F%8C%EC%95%84%EB%B3%B4%EA%B8%B0

0개의 댓글