일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Spring Cloud Netflix
- java
- multipart테스트
- 자바 ORM 표준 JPA 프로그래밍 정리
- git
- 백명석님
- intellij favorites
- ksqldb
- @TransactionalEventListener
- 리눅스
- 리팩토링 2판
- @Transactional Propagation
- 친절한 SQL 튜닝
- IntelliJ
- JPA
- 원격 브랜 삭제
- findTopBy
- ksql
- HandlerMethodArgumentResolver
- vue.js
- aws
- Stream
- CompletableFuture
- 자바 ORM 표준 JPA 프로그래밍
- #docker compose
- intellij 핵심 단축키
- intellij 즐겨찾기
- javascript case
- 마이크로 서비스
- Linux
- Today
- Total
시그마 삽질==six 시그마
도커란 무엇인가? 본문
1. 정의
Docker is a set of platform as a service (PaaS) products that uses OS-level virtualization to deliver software in packages called containers. Containers are isolated from one another and bundle their own software, libraries and configuration files; they can communicate with each other through well-defined channels.[7] All containers are run by a single operating system kernel and therefore use fewer resources than virtual machines
source: https://en.wikipedia.org/wiki/Docker_(software)
도커는 OS레벨의 가상화를 사용하여 컨테이너라는 패키지로 소프트웨어를 제공하는 오픈소스 플랫폼이다
2. Immutable Infrastructure
Immutable Infrastructure는 호스트 OS와 서비스 운영 환경(서버 프로그램, 소스 코드, 컴파일된 바이너리)을 분리하고, 한 번 설정한 운영 환경은 변경하지 않는다(Immutable)는 개념
이미지를 서버에 배포하여 실행 후 서비스가 업데이트되도 운영 환경 자체를 변경하지 않고, 이미지를 새로 생성하여 배포
-편리한 관리: 이미지 자체만 관리하면됨. 버전관리 가능
-확장: 이미지 하나로 서버를 계속 만들어낼 수 있음
-테스트: 이미지를 실행하기만 되서 테스트가 매우 쉬움
-lightWeight: 어디서든 실행 가능한(Portable) 환경 제공
3. 가상화 종류 3가지
1) 호스트형 서버 가상화
애플리케이션(가상) | 애플리케이션(가상) |
미들웨어(환) | 미들웨어(환) |
게스트 OS(경) | 게스트 OS(경) |
가상화 소프트 웨어 | |
호스트 OS | |
하드웨어 |
호스트가상화는 Base가 되는 Host OS설치 후 그위에 가상화 소프트웨어 설치한후 그위에 Guest OS가 구동되는 방식
종류는 VM Workstation, VMware Server, VMware Player 등 있음.
단점: 호스트 OS 상에서 다른 게스트 OS를 움직이고 있기 때문에 오버헤드가 커짐
(오버헤드란 가상화 수행위해 필요한 CPU 자원,디스크 용량,메모리 사용량을 말함)
2) 하이퍼바이저형 서버 가상화
애플리케이션(가상) | 애플리케이션(가상) |
미들웨어(환) | 미들웨어(환) |
OS (경) | OS(경) |
하이퍼 바이저 | |
하드웨어 |
하드웨어상에 가상화를 전문으로 하는 소프트웨어 하이퍼바이저를 배치하고 하드웨어와 가상환경을 제어함. MS의 Hyper-V Citrix사의 XenServer 등이 있음.
Host OS 없이 하드웨어 직접제어해서 자원을 효율적 사용가능
단, 가상환경마다 별도의 OS가 작동해서 가상환경의 시작에 걸리는 오버헤드가 커짐
3) 컨테이너 가상화
애플리케이션(컨테) | 애플리케이션(컨테) |
미들웨어(이너) | 미들웨어(이너) |
컨테이너 관리 소프트웨어 | |
호스트 OS | |
하드웨어 |
컨테이너란 같은 호스트 OS에서 독립된 논리적인 구획을 만들어 프로세스를 격리시켜 애플리케이션을 작동하기위해 필요한 라이브러리나 애플리케이션등을 하나로 모아 마치 별도의 서버인것처럼 사용할수 있게 만든것
컨테이너를 구획하는 기술은 Linux 커널의 namespace라는 가능을 사용. 이름공간이 다르면 동일이름이라도 다른 실체로 처리되기에 독립된 환경 구축가능(PID namespace ,Network namespace ,UID namespace ,MOUNT namespace ,UTS namespace ,IPC namespace)
호스트 OS의 자원을 논리적으로 분리시키고 여러개의 컨테이너가 공유해 사용. 게스트 OS 설치 x. 오버헤드가 적어서 고속으로 작동함
호스트 vs 도커 컨테이너 성능 테스트 큰 차이 없음
4. 도커의 이미지와 컨테이너
도커 이미지: 베이스 이미지+라이브러리
도커는 이미지를 통채로 생성하지 않고 바뀐 부분만 생성한뒤 부모 이미지를 계속 참조하는 방식으로 동작. 이를 Layer라고 함
운영체제로 보면 이미지는 실행 파일이고 컨테이너는 프로세스
'프로그래밍 > Docker' 카테고리의 다른 글
docker-compose(docker compose) (0) | 2020.08.06 |
---|---|
Dockerfile (0) | 2020.05.06 |
docker 명령어 (0) | 2020.05.05 |