이열매의 메모장
Docker - 1. 도커란 본문
도커(Docker)
이미지란?
- 특정 프로세스를 실행하기 위한 환경
- 애플리케이션 실행에 필요한 코드, 실행 환경, 라이브러리, 환경 변수, 설정값 등을 포함
- 상태 값이 없고 변하지 않음 -> 배포/롤백이 손쉬움
컨테이너란?
- 실행 가능한 이미지의 인스턴스
- 격리된 공간에서 프로세스가 동작하여 빠른 속도
- 커널까지 통째로 가상화하는 Hypervisor와 달리 파일시스템만 가상화
- OS, 라이브러리, 어플리케이션을 하나로 패키징
-
어플리케이션과 라이브러리를 패키징하므로 의존성 문제 ↓
-
OS와 관계없이 독립적인 실행이 가능
-
-
서비스 배포/롤백이 가장 큰 특징
컨테이너 기술 요소
Namespace
- 프로세스 별로 네트워크 리소스(네임 스페이스) 격리
- 네임 스페이스 종류
- Mnt : 파일 시스템 마운트
- Pid : 독립적인 프로세스 공간 할당
- Net : 중복 포트 바인딩, 네트워크 충돌 방지
- Ipc : 프로세스 간 독립적인 통신 통로 할당
- Uts : 독립적인 hostname 할당
- User : 독립적인 사용자 할당
CGroup
- Control Group의 약자
- 하드웨어 리소스 (CPU 시간, 시스템 메모리, 네트워크 대역폭) 그룹을 프로세스에 할당
- 해당 리소스 별로 정해진 양만 사용하도록 제한 및 격리하는 커널 기능
- 리소스 할당 방식
- Static Binding
- cgroup 이 특정 리소스만 사용
- Priority 기반
- cgroup 에게 리소스 사용의 우선순위를 부여
- 쿠버네티스 사용 방식
- Limit
- cgroup이 특정 시간만 리소스 사용
- Static Binding
unionFS
- 도커 레이어에서 컨테이너 별 독립된 파일 시스템 블록
- 파일 시스템 격리의 목적
도커란?
- 컨테이너 기반으로 애플리케이션을 개발, 배포 및 실행할 수 있도록 하는 가상화 플랫폼
- 두 개의 독립된 컴포넌트로 구성
- 도커 엔진
- 컨테이너 생성, 실행
- 데몬 프로세스 유형의 서버
- 빠르고 간편한 인터페이스 제공
- 일반적으로 도커는 도커 엔진을 의미
- 도커 허브
- 컨테이너 배포를 위한 클라우드 서비스 제공
- 공개 레지스트리
- 다른 사람들이 작업한 컨테이너 이미지 그대로 이용 가능
- 도커 엔진
도커의 특징
- 컨테이너를 git과 같이 형상 관리 할 수 있도록 제공
- 클라이언트와 서버로 구성
- 모든 명령은 클라이언트에서 REST로 서버에 요청되어 서버에서 수행
도커의 장점
- 가벼운 무게
- 사용자 OS 커널 사용 즉, 게스트 OS 탑재 필요 x
- 유연성
- 아무리 복잡해도 모듈별 컨테이너 화 가능
- 교환 가능
- 업데이트 및 업그레이드 즉시 배포 가능
- 이식성
- 로컬 구축, 클라우드 배포 등 어디서나 실행 가능
- 확장성 (Scalability)
- 이미지 빌드까지는 오래 걸리나 복제본을 늘리는 등 확장에 용이
- 가장 큰 이유라 할 수 있다.
컨테이너의 필요성
- 마이크로 서비스 아키텍처(MSA) 발전으로 인해 작아진 서비스 단위
- 다양한 이미지를 VM으로 관리하기엔 크기 및 속도 문제 발생
도커의 동작 방식
- 도커 이미지를 빌드하기 위해 Dockerfile 을 작성한다.
- Dockerfile 과 함께 도커 빌드 요청을 보낸다.
- 도커 서버에서는 도커 이미지를 빌드하여 로컬 저장소에 저장한다.
- 도커 push 명령을 받으면 도커 서버는 로컬의 도커 이미지를 도커 레지스트리에 올린다.
- 도커 run 명령을 배포할 도커 서버에 전송한다.
- 도커 run 명령을 받은 도커 서버는 도커 레지스트리에 이미지를 로컬 저장소로 다운 받는다.
- 도커 이미지를 이용하여 컨테이너를 시작한다.
도커 버전
-
엔터프라이즈
-
개선사항 적용한 상업용 에디션
-
기업에서 사용
-
-
커뮤니티
- 오픈소스 에디션
'Docker' 카테고리의 다른 글
도커 캐시 디렉토리 경로 변경 (0) | 2019.10.31 |
---|---|
Docker - 3. 자동 빌드 (0) | 2019.10.21 |
Docker - 2. 도커 사용하기 (0) | 2019.10.14 |
쿠버네티스 (0) | 2019.10.09 |
도커 Allow property 이슈 (0) | 2019.10.08 |
Comments