일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- html
- html post
- html id
- html 북마크
- html class
- 오사카 3박4일 경비
- html body
- html 스타일 속성
- html style
- 웹 프로그래밍
- html get
- 오사카 일정
- html 태그
- 오사카 날씨
- css {}
- html #
- css style
- html action
- html 새창띄우기
- 오사카 3박4일 일정
- html css
- CSS
- 오사카 3박4일 자유여행 코스
- html border
- html프로그래밍
- html 속성
- html 책갈피
- html padding
- html input type
- 오사카 경비
Archives
- Today
- Total
AND_END
[Docker] 도커란? - 역할과 개념 본문
반응형
도커란?
- 컨테이너 기반의 가상화 시스템입니다.
- Linux Container에 여러 기능을 추가함으로써 Application을 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트입니다.
Docker의 두 가지 주요 측면
Docker는 두 가지 서로 다른 측면에서 소프트웨어를 빌드, 제공 및 실행하는 방식을 변경합니다:
개발에서 프로덕션까지 애플리케이션을 안정적으로 구축할 수 있도록 프로세스를 개선합니다.
온프레미스에서 클라우드로 이전할 수 있도록 표준 이미지 형식을 제공합니다.
Virtual Machine (가상머신)
Hypervisor를 이용해 하나의 Host에서 여러 개의 OS를 생성해 사용하는 방식입니다.
이들 각 OS를 Guest OS라고 하며, 서로 간에 완전히 독립된 공간을 할당받습니다.
이 공간을 Virtual Machine이라고 합니다.
그러나, 이러한 방식의 작업은 Hypervisor를 반드시 거쳐야 하기 때문에 성능이 저하됩니다.
또한 각 Virtual Machine은 Guest OS를 위한 Library, Kernel 등을 모두 포함해야 하므로
배포를 위한 image 생성 시 그 크기가 커집니다.
집 하나를 여러 방으로 쪼개는 것처럼 물리적인 서버 하나를 여러개의 가상 서버를 쪼개어 각각 사용할 수 있습니다.
그런데 이렇게 한 컴퓨터에서 독립된 운영체제를 여러 개 돌리는 가상화는 문제가 있습니다.
컴퓨터 한 대에서 운영체제를 여러 개를 한꺼번에 돌리려다 보니 서로에게 치여 느릴 수 밖에 없습니다.
- 서버로 많이 쓰는 운영체제들은 Ubuntu, CentOs, RedHat들이 모두 동일한 리눅스 커널이라는 알맹이를 사용하는데 이를 하나로 퉁칠 수는 없을까 ?
- 그래서 여러 가지 역사를 거쳐 완성된 오픈소스 기술이 바로 도커 입니다.
도커를 쓰면 굳이 독립된 운영체제를 여러 개 띄울 필요가 없습니다.
Container (컨테이너)
가상화된 공간을 생성하기 위해 Linux 자체 기능인 chroot, namespace, cgroup을 사용하여
Process 단위의 독립 공간을 만들기 때문에 성능 손실이 거의 발생하지 않습니다.
가상머신과 달리 커널을 공유해서 사용하므로, 컨테이너에는 라이브러리 및 실행파일만 있으므로 용량이 비교적 작음
위의 이유로 컨테이너를 만들때 배포하는 시간이 가상머신에 비해 빠르며, 사용할 때의 성능 손실 또한 거의 없음
* 도커를 사용하는 이유 *
Application의 개발과 배포가 편해진다.
- 독립된 개발 환경 보장
Container는 격리된 공간이므로 그 자체에 특별한 권한을 주지 않는 한 내부에서 무엇을 하든 Host OS에는 영향을 끼치지 않습니다.
- 개발/운영 환경의 통합
Container 내부 작업을 배포하기 위해서는 해당 Container를 docker image라는 하나의 패키지로 만들어 운영 서버에 전달하기만 하면 됩니다.
서비스를 개발했을 때의 환경을 다른 서버에서도 똑같이 복제할 수 있기 때문에
각종 라이브러리 설치 등으로 인한 의존성을 걱정할 필요가 없습니다.
- 배포 신속성 및 H/W 효율
Kernel을 포함하고 있지 않기 때문에 image 크기가 비교적 작습니다.
따라서 Application의 배포 속도가 매우 빨라지며, H/W 용량을 작게 차지합니다.
여러 Application의 독립성과 확장성이 높아진다.
- Monolith Architecture
여러 Module이 상호 작용하는 로직을 하나의 프로그램 내에서 구동시킵니다.
기능이 복잡한 대규모 서비스에서는 확장성과 유연성이 떨어진다는 단점이 있습니다.
- Microservice Architecture
여러 Module을 독립된 형태로 구성하므로 언어에 종속되지 않습니다.
또한, 변화에 빠르게 대응할 수도 있습니다.
여기서 독립된 형태들을 구현하는 데에 주로 Docker Container 가 많이 사용됩니다.
반응형
'IT 지식' 카테고리의 다른 글
노션(Notion) 초보자를 위한 첫 사용법 가이드 (3) | 2025.03.08 |
---|