도커의 기본 개념
컨테이너 가상화를 구현하기 위한 상주 애플리케이션과 이를 관리하는 명령형 도구로 구성
컨테이너
- 컨테이너 가상화 소프트웨어 없이 운영 체제의 리소스를 격리해 만드는 가상 운영 체제
- 컨테이너를 만들면서 발생하는 오버헤드는 다른 가상화 소프트웨어보다 더 적음
- 빠르게 시작 및 종료할 수 있고 이에 들어가는 리소스도 작은편
애플리케이션이 중심이 되는 도커
- 호스트 운영 체제의 영향을 받지 않는 실행 환경(Docker Engine을 이용한 실행 환경 표준화)
- DSL(Dockerfile)을 이용한 컨테이너 구성 및 애플리케이션 배포 정의
- 이미지 버전 관리
- 레이어 구조를 갖는 이미지 포맷(차분 빌드가 가능함)
- 도커 레지스트리(이미지 저장 서버 역할을 함)
- 프로그램 가능한 다양한 기능의 API
도커 스타일 체험하기
도커 이미지 빌드 : Dockerfile이나 애플리케이션 실행 파일을 사용해서 도커 컨테이너의 원형이 될 이미지를 만드는 과정
Dockerfile
FROM ubuntu:16.04
COPY helloworld /usr/local/bin
RUN chmod +x /usr/local/bin/helloworld
CMD ["helloworld"]
- COPY : 파일을 도커 컨테이너 안의 특정 경로로 복사
- RUN : 도커 컨테이너 안에서 어떤 명령을 수행하는 것
- FROM : 컨테이너 원형 역할을 할 도커 이미지를 정의
- CMD : 완성된 이미지를 도커 컨테이너로 실행하기 전에 먼저 실행할 명령을 정의
docker image build -t helloworld:latest
- 도커 이미지 빌드(Dockerfile이 있는 폴더에서 실행)
- docker container run helloworld:latest
도커를 사용하는 의의
변화하지 않는 실행 환경으로 멱등성(Idempotency) 확보
- 불변 인프라
- 서버에 변경을 가하고 싶은 경우에는 기존 인프라를 수정하는 대신 새로운 서버를 구축하고 그 상태를 이미지로 저장한 다음 그 이미지를 복제
- 한번 설정된 서버는 수정 없이 파기 되므로 멱등성을 신경 쓸 필요조차 없다.
코드를 통한 실행 환경 구축 및 애플리케이션 구성
- 코드로 관리하는 인프라
- 인프라 구성을 Dockerfile로 관리
실행 환경과 애플리케이션의 일체화로 이식성 향상
- 애플리케이션과 인프라를 묶어서 구축
- 높은 이식성 - 도커 이미지는 도커가 설치된 머신이라면 어디서든 실행할 수 있다.
시스템을 구성하는 애플리케이션 및 미들웨어의 관리 용이성
- 필요한 컨테이너를 각각 실행하는 방법으로 시스템을 구성
- 여러 컨테이너를 사용하는 애플리케이션을 쉽게 관리할 수 있도록 도커 컴포즈(Docker Compose)라는 도구를 제공
- 도커와 도커 컴포즈를 통해 여러 애플리케이션과 미들웨어의 의존관계를 간결한 코드로 관리할 수 있다.
- 도커 스웜(Docker Swarm)
- 여러 컨테이너를 관리할 수 있는 도구
- 컨테이너 증가, 감소는 물론이고 노드의 리소스를 효율적으로 활용하기 위한 컨테이너 배치 및 로드 밸런싱 기능 등 실용적인 기능을 갖추고 있다.
- 배포 시에도 롤릴 업데이트가 가능해 운영 면에서도 장점이 많다.
- 여러 서버에 걸쳐 있는 여러 컨테이너를 관리하는 기법을 컨테이너 오케스트레이션(container orchestration)이라고 한다.
운영 환경에서 빛을 발하는 도커
도커의 신뢰성에 대한 의문
- 전 세계 운영 환경에 도입됐으면 확실히 주류에 편입되고 커뮤니티의 성숙과 함께 신뢰성을 인정 받음
성능 면에서의 우려
- 스케일 아웃이 쉽다는 장점이 있음에도 오버헤드는 매우 적음
현실적으로 운영이 가능한지에 대한 우려
- 운영에 도움을 주기 위한 여러 도구가 있음
- ex) GCP : 쿠버네티스 기반의 구글 쿠버네티스 엔진(GKE), AWS : 아마존 엘라스틱 컨테이너 서비스(ECS), 애저 : 애저 컨테이너 서비스
'책 > 도커, 쿠버네티스를 활용한 컨테이너 개발 실전 입문' 카테고리의 다른 글
컨테이너 실전 구축 및 배포 (0) | 2020.07.23 |
---|---|
도커 컨테이너 배포 (0) | 2020.07.16 |