본문 바로가기
MSA/MSA관련기술

도커 및 도커 컴포즈 정리

by 문자메일 2022. 11. 10.

도커 장점 - 기존 전통 방식 문제가 서버의 라이브러리 등 의존성을 시간이 지남에 따라 동일하게 관리하기 어렵다는 점이 있는데, 도커 이미지 파일로 환경정보를 저장하여 관리하면, 동일한 환경의 인스턴스를 찍어낼 수 있기 때문에 스케일 아웃(오토 스케일링)에 매우 유리.

그리고 프로세스를 격리된 환경에서 실행하기에 안정성도 확보

 

 

도커란?

컨테이너를 사용하여 응용프로그램을 더 쉽게 만들고, 배포하고 실행할 수 있도록 설계된 도구이며 컨테이너 기반의 오픈소스 가상화 플랫폼

일반 컨테이너 개념에서 물건을 손쉽게 운송하는 것처럼 어플리케이션 환경에 구애 받지 않고 손쉽게 배포 관리를 할 수 있다.

 

도커를 사용해야 하는 이유

대표적인 필요성 예시가 똑같은 일을 하는 2대의 서버가 있어도, A 서버는 1년 전에 구성했고, B 서버는 금일 구성했다 할 때, 아무리 두 서버의 환경을 동일하게 맞추려고 노력하려고 해도 운영체제, 컴파일러, 설치된 패키지 등 모든 종속성을 완벽하게 같게 만들기는 어렵다.

 

위와 같은 상황으로 두 서버의 동작에 차이가 생길 수 있다. (A서버에서는 되는데 B서버에서는 안된다던가)

 

도커는 서버마다 동일한 환경을 구성할 수 있기 때문에 서버를 새로 구축하는 시점에서 종속성을 동일하게 맞추기 어려운 문제를 해결할 수 있다.

 

 

도커 컨테이너와 이미지

도커 이미지란 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같은 응용프로그램을 실행 하는데 필요한 모든 것을 포함하는 패키지이다,

 

도커 이미지는 깃허브와 비슷한 docker hub를 통해 버전 관리한다.

 

컨테이너는 도커 이미지를 독립된 공간에서 실행할 수 있게 해주는 기술이다.

 

 

도커 파일

Dockerfile이란 도커 이미지를 구성하기 위해 있어야할 패키지, 의존성, 소스코드 등을 하나의 file로 기록하여 이미지화 시킨 명령 파일이다.

즉, 이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 더 이상 새로운 서버가 추가되면 의존성 파일을 추가나 환경을 맞추는 작업을 할 필요가 없게 된다.

 

 

도커 파일 주요 명령어

FROM

// 새로운 이미지를 생성할 때 기반으로 사용할 이미지를 지정 ( 이미지 이름:태그 )

// JDK 11 이 있는 컨테이너 사용

FROM openjdk:11

 

ARG

// 이미지 빌드 시점에서 사용할 변수 지정

ARG JAR_FILE=build/libs/app.jar

 

COPY

// 호스트에 있는 파일이나 디렉토리를 Docker 이미지의 파일 시스템으로 복사

COPY ${JAR_FILE} ./app.jar

 

ENV

// 컨테이너에서 사용할 환경 변수 지정

// TimeZone 환경 변수

ENV TZ=Asia/Seoul

 

ENTRYPOINT

// 컨테이너가 실행되었을 때 항상 실행되어야 하는 커맨드 지정

ENRTYPOINT ["java", "-jar", "./app.jar"]

 

 

도커 컴포즈란

Docker Compose란 멀티 컨테이너 도커 어플리케이션을 정의하고 실행하는 도구

Application, Database, Redis, Nginx 등 독립적인 컨테이너로 관리한다고 할 때 다중 컨테이너 라이프 사이클을 어떻게 관리해야 하는가?

여러개의 도커 컨테이너로부터 이루어진 서비스를 구축 & 네트워크 연결 & 실행 순서를 자동으로 관리

docker-compose.yml 파일을 작성하여 1회 실행함으로써 설정된 모든 컨테이너 실행함

'MSA > MSA관련기술' 카테고리의 다른 글

Redis 환경설정 방법  (0) 2022.11.29
서버 성능 측정 방법  (0) 2022.11.29
MSA 정리  (1) 2022.10.14
msa 관련 도커 명령어 저장  (1) 2022.10.06
도커 관련 정리 (도커 명령어 포함)  (0) 2022.10.05

댓글