티스토리 뷰
반응형
도커(Docker)
- 리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로서 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트
- Go 언어로 작성됨
1. 가상 머신과 도커 컨테이너
- 가상머신
- 하이퍼바이저를 이용해 여러 개의 운영체제(가상 머신이라는 단위로 구분)를 하나의 호스트에서 생성해 사용하는 방식
- 게스트 운영체제(Guest os) : 하이퍼바이저에 의해 생성되고 관리되는 운영체제
- 각 게스트 운영체제는 다른 게스트 운영체제와는 완전히 독립된 공간과 시스템 자원을 할당받아 사용한다
- 장점
- 완벽한 운영체제를 생성할 수 있다
- 단점
- 일반 호스트에 비해 성능의 손실이 발생한다
- 게스트 운영체제를 사용하기 위한 라이브러리, 커널 등을 전부 포함하기 때문에 이미지의 크기가 커서 배포하기 부담스럽다
- 도커 컨테이너
- 가상화된 공간을 생성하기 위해 리눅스의 자체 기능인 chroot, 네임스페이스(namespace), cgroup을 사용함으로써 프로세스 단위의 격리환경을 만들기 때문에 성능 손실이 거의 없다
- 호스트의 커널을 공유해서 사용하고 컨테이너 안에는 애플리케이션을 구동하는 데 필요한 라이브러리 및 실행 파일만 존재한다
- 장점
- 컨테이너를 이미지로 만들어 배포하는 시간이 가상머신에 비해 빠르다
- 가상화된 공간을 사용할 때의 성능 손실도 거의 없다
2. 도커를 시작해야하는 이유
-
애플리케이션의 개발과 배포가 편해진다
- 호스트 OS와 독립된 개발 환경을 보장받을 수 있다
- 서비스를 개발했을 때 사용했던 환경을 다른 서버에서도 컨테이너로서 똑같이 복제할 수 있기 때문에 개발/운영 환경의 통합이 가능해진다
- 도커는 커널을 포함하고 있지 않아 이미지의 크기가 그다지 크지 않고
- 이미지 내용을 레이어 단위로 구성하며 중복되는 레이어를 재사용할 수 있어서 애플리케이션의 배포 속도가 매우 빨라진다
-
여러 애플리케이션의 독립성과 확장성이 높이진다
- 모놀리스(Monolith) 구조
- 소프트웨어의 여러 모듈이 상호 작용하는 로직을 하나의 프로그램 내에서 구동시키는 방식
- 소규모 서비스에 적합, 서브시의 기능이 복잡해지고 거대해질수록 확장성과 유연성이 줄어든다
- 마이크로 서비스(Micro-service) 구조
- 여러 모듈을 독립된 형태로 구성하기 때문에 언어에 종속되지 않고 변화에 빠르게 대응할 수 있으며, 각 모듈의 관리가 쉬워진다
- 모놀리스(Monolith) 구조
3. 도커 설치하기
- 도커 mac os 버전은 xhyve 기술을 이용해 리눅스 커널 기능과 도커 엔진 환경을 구성한다
* 더 찾아볼것
- hypervisor
- chroot, 네임스페이스, cgroup
- xhyve
반응형
'study > 시작하세요! 도커 쿠버네티스' 카테고리의 다른 글
05. 쿠버네티스 (0) | 2021.07.26 |
---|---|
02. 도커 엔진 (0) | 2021.07.22 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스프링
- 자바스크립트
- gradle
- 도메인주도설계
- k8s
- 코틀린
- ImagePullBackOff
- linuxkit
- springboot
- 스프링부트
- gasmask
- 자바
- java
- 클린코드
- docker
- 쿠버네티스
- kotlin In Action
- docker pull limit
- ddd
- 도커
- clean code
- back merge
- IntelliJ
- Kubernetes
- QuickTimePlayer
- Spring
- docker for mac
- cacheable
- kotlin
- JavaScript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함