반응형
1. 도커(Docker)란 무엇인가?
- 도커(Docker)는 소프트웨어 기술을 활용하여 애플리케이션을 더 쉽게 개발, 배포 및 실행할 수 있도록 도와주는 오픈 소스 플랫폼이다.
- 애플리케이션은 격리된 환경에서 실행되기 때문에, 다른 애플리케이션이나 시스템에 영향을 미치지 않는다.
2. Docker vs Vritual Machine (VM)
- Docker와 VM은 모두 애플리케이션이 격리된 환경에서 실행 될 수 있도록 하는 기술이지만 아래와 같은 차이가 있다.
- Docker를 더 잘 이해하기 위해 두 기술 간 어떤 차이가 있는지 이해하는 것은 중요하다.
Docker | Vritual Machine (VM) | |
개념 (Concept) |
컨테이너화 기술을 사용하여 애플리케이션과 그 종속성을 격리된 환경에서 실행 컨테이너는 호스트 운영체제의 커널을 공유하며 애플리케이션과 필요한 라이브러리만 포함 |
하이퍼바이저 (Hypervisor)를 통해 물리 하드웨어를 가상화 하여 여러 운영체제를 동시에 실행 각 가상 머신은 자체 운영체제와 애플리케이션을 포함한 전체 시스템을 가상화한다. |
아키텍쳐 (Architecture) |
[ 호스트 운영체제 ] - 도커는 호스트 OS위에서 실행된다. [ 도커 엔진 ] - 도커 엔진은 호스트 운영체제 위에서 실행되며, 컨테이너를 관리하고 실행한다. [ 컨테이너 ] - 각 컨테이너는 애플리케이션과 필요한 라이브러리만 포함하여, Host OS 커널을 공유 |
[ 호스트 운영체제 ] - 하이퍼 바이저가 호스트 운영체제 위에서 실행되거나, 하이퍼바이저가 직접 하드웨어 위에서 실행될 수 있다. [ 하이퍼바이저 ] - 하이퍼바이저는 물리적 하드웨어를 가상화하여 여러 VM을 실행한다. [ 가상머신 ] - 각 VM은 자체 운영체제와 애플리케이션을 포함한 전체 시스템을 가상화 한다. |
장점 (Advantage) |
[ 경량화 ] - 도커 컨테이너는 호스트 운영체제의 커널을 공유하므로, VM보다 훨씬 빠르게 시작할 수 있다. - 컨테이너는 애플리케이션과 필요한 라이브러리만 포함하므로 VM보다 적은 자원을 사용한다. [ 이식성 ] - 도커 이미지를 통해 개발, 테스트, 운영 환경에서 일관된 실행 환경을 보장할 수 있다. - 도커 이미지를 이용해 다양한 플랫폼에서도 동일하게 실행할 수 있다. [ 개발 및 테스트 용이 ] - 컨테이너는 빠르게 배포되고, 업데이트 및 롤백이 용이하다. - 도커는 지속적 통합 및 배포 (CI/CD)를 파이프라인을 통해 쉽게 통합할 수 있다, |
[ 높은 수준의 격리 ] - 각 VM은 자체 운영체제를 가지고 있기 때문에, 보다 완벽한 격리를 제공한다. - VM은 하이퍼바이저를 통해 격리되므로, 컨테이너보 다 높은 수준의 보안을 제공한다. [ 다양한 운영체제 지원 ] - VM 환경에서는 다양한 운영체제를 실행 할 수 있다. - 이는 특정 OS에서만 동작하는 애플리케이션을 실행할 수 있는 장점이다. [ 관리 도구 ] - VM은 오랜시간 사용되어 온 만큼 다양한 관리 도구가 존재한다. - 많은 기업들이 VM 기술을 사용하는 만큼, 다양한 지원과 서비스가 존재한다. |
단점 (Disadvantage) |
[ 보안 ] - Host OS와 커널을 공유하기 때문에, 커널 수준의 보안에 취약하다. - VM보다 격리 수준이 낮다. [ 운영체제 제한 ] - 도커는 주로 리눅스 기반이며, 다른 운영체제에서의 지원이 제한적이다. |
[ 무거운 자원 사용 ] - 각 VM은 운영체제를 포함하기 때문에, 보다 많은 자원을 사용한다. - VM은 부팅 과정이 필요하기 때문에 시작 시간이 오래 걸린다. [ 복잡한 관리 ] - 각 VM은 독립된 OS를 가지고 있기 때문에, 업데이트 및 패치 관리가 필요하다. [ 이식성 ] - VM은 운영체제와 하드웨어에 종속적일 수 있기에, 도커 컨테이너에 비해 이식성이 떨어진다. |
3. 도커의 주요 개념
- 이미지 ( Image )
- 도커 이미저는 컨테이너를 생성하는데 필요한 모든 파일과 설정을 포함한 템플릿이다.
- 이미지는 애플리케이션과 의존성을 포함하고 있으며, 여러 계층으로 이루어져 있다.
- 각 계층은 이전 계층에 대한 변경사항을 포함하며, 계층들이 쌓여 최종 이미지를 형성한다.
- 도커 이미지들은 도커 허브 ( Docker Hub )와 같은 레지스트리에서 관리 배포 된다.
- 컨테이너 ( Container )
- 컨테이너는 도커 이미지를 이용해 실행된 상태를 의미하며, 애플리케이션과 의존성을 포함하고 있다.
- 컨테이너는 독립된 환경에서 실행되기 때문에, 애플리케이션간 격리가 가능하다.
- 또한, 도커 이미지를 활용해 여러 개의 컨테이너를 쉽게 생성 할 수 있다.
- 도커 엔진 ( Docker Engine )
- 도커 엔진은 도커 컨테이너를 생성, 실행, 중지, 삭제 등의 작업을 관리하는 핵심 컴포넌트 이다.
- 클라이언트-서버 아키텍처를 기반으로하며, 주요 구성 요소는 Docker Daemon, Docker CLI, Docker REST API가 있다.
- 도커 허브 ( Docker Hub )
- 도커 허브는 도커 이미지를 저장하고 공유 할 수 있는 클라우드 기반 레지스트리 서비스이다.
- 도커 허브를 통해 사용자는 공개 및 비공개 이미지 업로드가 가능하며, 이를 이용해 다른 사용자와의 공유가 가능하다.
- 특정 조직 내에서 해당 기능을 이용해 협업이 가능하다.
🙋♂️ 궁금한 점이나 잘못된 내용을 댓글로 적어주시면 감사하겠습니다 !!
반응형
'Containerization > Docker' 카테고리의 다른 글
# [Docker] Docker Engine (2) | 2024.09.29 |
---|