일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 카카오프로젝트 100
- python
- GIT
- 카카오프로젝트
- numpy
- javascript
- 보안뉴스 한줄요약
- 자바스크립트
- 파이썬
- 오라클
- ES6
- 보안뉴스
- 랜섬웨어
- php
- oracle db
- 자바스크립트 jQuery
- 자바스크립트 기본 문법
- 자바스크립트 객체
- 자바스크립트 prototype
- 보안뉴스 요약
- oracle
- 자바스크립트 API
- 다크웹
- 보안뉴스요약
- Oracle SQL
- 카카오프로젝트100
- 자바스크립트 element api
- 깃허브
- 보안뉴스한줄요약
- 자바스크립트 node
- Today
- Total
FU11M00N
[Docker]도커와 컨테이너 본문
도커란?
하나의 컨테이너 기술을 지원하는 프로젝트 중 하나.
컨테이너 이동을 주도하는 회사이며 하이브리드 클라우드의 모든 애플리케이션을 처리할 수 있는 컨테이너 플랫폼.
컨테이너는 용기로 비유할 수 있고 도커는 항만 노동자라고 부를 수 있다.
컨테이너?
컨테이너 안에 이미지가 들어가 있는 환경 호스트 OS상에 논리적인 구획(컨테이너)을 만들고, 애플리케이션을 작동시키기 위해 필요한 라이브러리나 애플리케이션 등을 하나로 모아, 마치 별도의 서버인 것처럼 사용할 수 있게 만든 것
호스트 OS의 리소스를 논리적으로 분리시키고, 여러 개의 컨테이너가 공유하여 사용합니다. 컨테이너는 오버헤드가 적기 때문에 가볍고 고속으로 작동하는 것이 특징.
컨테이너는 운영체제에서 애플리케이션을 분리시킵니다.
사용자가 최적화되고 최소화 된 리눅스 OS를 운영하면서 다른 모든 것을 하나 이상의 분리된 컨테이너에서 실행시킬 수 있다는 뜻.
컨테이너에서 운영체제를 분리시키기때문에, 컨테이너 런타임 환경을 지원하는 모든 리눅스 서버로 컨테이너로 옮길 수 있다.
컨테이너의 장점
A. 빠른 시작과 종료속도
1. 가상환경이 커널에서 공유되기 때문에 새로운 커널을 시작할 필요가 없고, 하드웨어 초기화 등의 작업이 필요없다.
2. 컨테이너를 생성한다는 것은 OS 입장에서 단순히 프로세스를 시작하는 것이기 때문에 일반적인 프로세스가 실행 되는 것과 비슷하다.
B. 높은 집적도
1. 컨테이너는 커널이 직접 프로세스를 조작,관리 하여 분리된 공간을 구성하기 때문에 호스트의 OS와 하나이다.
2. 2개 이상의 컨테이너를 만들어 사용중이더라도 OS는 하나이기 때문에, 가상머신에 비해 고밀도가 가능하다.
3. 컨테이너에서는 실행되는 프로세스를 위한 메모리만 필요하기 때문에 낮은 사양의 환경에서도 동작이 가능하다.
C. 애플리케이션 컨테이너 지원
1. 컨테이너는 가상머신과 달리 INIT를 먼저 시작하거나 각종 데몬들을 실행할 필요가 없다.
2. 컨테이너는 목적에 맞는 프로세스만 존재하는 환경을 만들 수 있다.
3. 웹서버용 컨테이너 같은 환경들은 애플리케이션 컨테이너라고하고 init를 처음 시작하여 OS가 시작하는 것과 같은 환경이 돌아가는 컨테이너는 시스템 컨테이너라고 분류된다.
컨테이너의 단점.
A. HOST OS에 의존
1.Linux 컨테이너는 OS에서 Linux Kernel이 관리하기 때문에 Linux 이외의 다른 OS에서는 동작하지 않으며, 컨테이너 환경에서도 다른 OS를 설치할 수 없다.
2. 컨테이너의 Linux 모든 배포판을 설치할 수 있지만, 실행중인 커널은 하나이기에 컨테이너는 호스트 OS의 커널을 사용하게 된다. ex) Ubuntu Host OS 컨테이너에서의 Cent os를 설치하면 실질적으로 사용되는 커널은 Ubuntu 커널.
가상 머신의 문제점?
어떻게 보면 하나의 컴퓨터를 통째로 만드는 개념이다 보니 성능 손실이 발생했습니다.
CPU회사들 (인텔,AMD)는 CPU안에 가상화 기능을 넣어 사용해보지만 그래도 느려..
호스트와 커널을 공유하는 반가상화 기술이 등장하기도 했지만 그래도 느려..
또한 이미지가 OS에 포함되기때문에 이미지 용량이 커집니다.( 이미지 다운로드하는 것조차도 너무 부담스러움)
호스트 vs가상 머신 vs 컨테이너
Traditional Deployment: 일반적으로 우리의 하드웨어는 운영체제에 의해 관리가 되고 그 위에 앱이 작동하는 방식입니다.
Virtualized Deployment: 하이퍼바이저 방식으로 우리의 자원들을 가상화시켜 사용합니다. 운영체제 위에 운영체제가 작동하는 방식입니다.
Container Deployment : 컨테이너 엔진(컨테이너 런타임) 을 사용하여 프로세스 단위로 각각 동작하는 방식입니다.
가상 머신은 가상화된 하드웨어 위에 OS가 올라가는 형태로 99% host와 분리된다고 봐도 되지만,
컨테이너는 OS를 가상화시키기 때문에 OS 부분을 가상화해 올려 커널을 host와 공유합니다. 이것은 리눅스의 cgroup과 namespaces가 제공하는 기술입니다. 즉 가상화라고하기보단 "격리"를 시킵니다.
가상 머신보다 조금 더 얕게 사용됩니다.
'Docker' 카테고리의 다른 글
[Docker] docker image push 하기 (0) | 2020.10.15 |
---|---|
[Docker] 웹 로그보기 / logrotate (0) | 2020.10.14 |
[Docker] 도커 환경 구성하기 , 도커 wordpress 설치 (0) | 2020.10.14 |