동글이기가 레포

Docker(도커)는 컨테이너 기반의 오픈소스 가상화 플랫폼이다.

 

컨테이너는 해운산업의 혁명적인 운송방식으로, 각 컨테이너들에 다양한 화물을 넣을 수 있으며 규격화 되어 있다.

이것을 IT적으로 표준 패키징과 배포 형식으로 생각해도 된다.

 

컨테이너를 사용함으로써 얻는 이점은 아래와 같다.

 - 운반 용량을 크게 늘림

 - 비용을 절감

 - 규모의 경제를 이루기 쉬움(규격화 되어 있기 때문)

 - 다루기 쉽다(규격화 되어 있기 때문에 규격에 맞는 방식 하나만 있어도 가능)

 

해운산업말고도 우리가 웹 애플리케이션 등을 서비스하기 위해 이용하고 있는 서버에도 적용할 수 있다.

다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 용이하게 해준다.

(위에서 말한 표준 배키징과 배포 방식이라고 생각)

 

SW의 컨테이너화

SW의 컨테이너화는 표준 패키지화 라고도 생각할 수 있다.

이는 컨테이너화를 통한 SW와 HW & OS영역과의 분리이다.(Application과 HW/커널/컨테이너 런타임과 분리)

 

컨테이너화를 하게 된다면 개발자는 Application 로직에 집중하고 IT부서들은 배포 및 관리에 집중할 수 있기 때문에 업무 영역 분리가 가능하다.

 

또한, HW 및 VM환경을 고려하지 않고 배포 및 서비스를 하기 때문에 이식성이 매우 좋다.

이는 결국 애자일(Agile)한 생성과 배포, 지속적 통합과 배포를 가능하게 하여 개발 속도가 점차적으로 빨라질 것이다.

 

 

물리서버 및 VM과 컨테이너의 비교

 

배포 환경의 변화

 

Docker

docker를 사용하는 가장 큰 이유 중 하나는 Application을 개발하면서 변화하지 않는 동일한 환경 구성을 할 수 있는 점이다.

즉, 똑같은 Application을 구동하더라도 개발자 로컬 서버마다의 환경이 다른데, 이러한 문제를 docker로 같은 환경을 만들 수 있다.

 

docker에는 이미지가 존재한다(docker 이미지)

이는 컨테이너를 구성하는 파일 시스템과 실행할 Application 설정을 합친 것이다.(컨테이너를 생성하기 위한 템플릿)

 

대표적인 컨테이너 엔진인 docker의 3가지 기능

 

아래는 위 내용을 간단한 그림으로 표현한 것이다.

 

docker이미지로 Application이 실행되는 상태를 docker container라고 한다.

 

그러나, 보통 일반적인 시스템은 단일 Application으로 서비스되지 않는다.

여러 개의 Application이 서로 의존성 있게 구성되어 시스템이 이루어져 있다.

(Ex. 인증 서버, 결제 서버 등)

그러한 논리로 따져보면, 시스템이 제대로 동작되기 위해 하나의 Application을 담당하고 있는 컨테이너가 여러 개가 필요하다.

이때, 필요한 기술이 docker compose(도커 컴포즈)이다.

 

docker compose는 yaml포맷으로 작성되며 여러 개의 컨테이너의 실행을 한 번에 관리할 수 있게 해준다.

 

ex) docker-compose.yml

version: "3"
services:
  test:
    image: example/test:latest
    ports:
      - 9000:8080

version : docker-compose.yml 내용을 해석하기 위한 문법 버전(바뀔 수 있으니, 공식 문서를 통해 안전한 버전을 확인)

test : services아래의 test는 컨테이너 이름이다.(하나의 컨테이너라고 보면 됨)

 

docke compose를 실행시키기 위해선 아래 명령어를 사용한다.

docker-compose up

 

백그라운드 및, 정보 확인, 종료는 아래의 명령어이다.

// 백그라운드 실행
docker-compose up -d
// 정보 확인
docker-compose ls
// 컨테이너 종료
docker-compose down

 

컨테이너 종료 명령어인 'docker-compose down'은 yaml파일에 명시된 컨테이너들을 모두 종료시킨다.

 

실제로 yaml파일을 구성하기 위해선 공식 문서나 구글링을 찾아보면 될 듯 하다.

 

 

컨테이너 엔진 단독 구성의 한계

컨테이너 엔진을 단독으로 구성한다면 위와 같이 각각의 VM에 접속하여 명령어들을 하나하나 입력을 해주어야 한다.

'스터디 > 개인공부' 카테고리의 다른 글

스프링 시큐리티 OAuth2 (시작)  (0) 2023.01.05
[oidc] OpenID Connect란?  (0) 2022.04.16
layered / hexagonal architecture  (0) 2022.03.07
REST API  (0) 2022.03.06

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading