PLOD

[Docker] docker와 docker - compose 본문

computer science/Cloud computing

[Docker] docker와 docker - compose

훌룽이 2024. 8. 14. 19:18

Docker

  • Go 언어로 작성된 리눅스 컨테이너 기반 오픈소스 가상화 플랫폼
  • 컨테이너 : 가상화 기술 중 하나 , 애플리케이션과 그 실행 환경을 함께 패키징하여 어디서든 동일하게 실행 될 수 있도록 해주는 기술
  • 가상화 : 물리적 컴퓨터 하드웨어를 보다 효율적으로 활용할 수 있도록 해주는 프로세스 

Docker 주요 개념 정리

  1. 이미지(Image): 실행 가능한 애플리케이션과 실행 파일 및 설정과 같은 환경을 정의한 파일이다. 코드, 런타임, 라이브러리 등을 포함하며, 변경이 불가능하다. → Dockerfile을 통해 docker image를 생성 할 수 있다.
  2. 컨테이너(Container): 이미지를 실행한 상태. 이미지의 인스턴스로서, 애플리케이션이 실제로 동작하는 환경을 제공

Docker를 사용하는 이유

  1. 일관성 : 어느 컴퓨터(OS)에서나 동일하게 동작한다
  2. 이식성: 컨테이너는 어디서든 동일한 환경을 제공하므로, 다양한 플랫폼에서 쉽게 애플리케이션을 실행할 수 있다
  3. 확장성: 컨테이너를 이용한 마이크로서비스 아키텍처(MSA)를 통해 애플리케이션을 쉽게 확장 가능
  4. 효율성: 가상 머신보다 가볍고 빠르며, 리소스를 효율적으로 사용 가능

Docker File

Docker Image를 생성하기 위한 명령어 파일

# OpenJDK 21의 최신 버전을 기반 이미지로 사용
FROM openjdk:21-jdk-slim

WORKDIR /app

# JAR 파일을 복사하기 위한 경로 설정
ARG JAR_FILE=build/libs/{jarfile}

# 복사할 JAR 파일의 경로를 지정
COPY ${JAR_FILE} app.jar

# 애플리케이션을 실행
ENTRYPOINT ["java", "-jar", "app.jar"]

 

도커 이미지 빌드

docker build -t test-docker-hello .

도커 이미지 실행  - (이미지 → 컨테이너)

docker run -d -p 8080:8080 test-docker-hello

도커 컨테이너 종료 명령어

docker stop test-docker-hello

 

Comments