Fall in IT.

도커, 도커 컴포즈 도대체 왜 필요한데? 본문

기타

도커, 도커 컴포즈 도대체 왜 필요한데?

D.Y 2023. 12. 16. 21:43

도커 컴포즈 도대체 왜 필요한데?

 

안녕하세요.

오늘은 도커와 도커 컴포즈에 대해서 알아보겠습니다. 최근에 도커 컨테이너 간의 연결에 대한 간단한 질문(?)을 받았는데 잘 생각이 나지 않아서 GPT의 도움을 받아서 답했던 일이 있었습니다.

그래서 다시한번 도커에 대한 개념과 도커 컴포즈에 대해 정리하고자 글을 적게 되었습니다.

도커란?

도커란 가상화 기술을 사용하여 애플리케이션과 그에 필요한 실행 환경을 컨테이너로 패키징하는 오픈 소스 플랫폼이다.

도커는 그럼 왜 필요한가?

도커는 개발 환경을 표준화하고, 애플리케이션의 배포와 관리를 단순화하는데 도움을 준다. 여러 환경에서 일관된 실행을 보장하며 가상화를 통해 시스템 자원을 효율적으로 사용할 수 있다. 또한 확장성이 뛰어나며 빠른 배포를 가능케 하므로 개발자와 운영팀 간의 협업을 촉진한다.

도커 컴포즈란?

도커 컴포즈는 여러 도커 컨테이너를 하나의 서비스로 정의하고 실행하기 위한 도구이다.

YAML 파일을 사용하여 여러 컨테이너 간의 관계와 설정을 정의할 수 있다.

도커 컴포즈는 왜 필요한가?

도커 컴포즈는 여러 개의 컨테이너를 하나의 애플리케이션으로 정의하고 실행하는데 도움을 준다. 복잡한 애플리케이션을 여러 컨테이너로 나눠 관리할 때, 이들의 관계와 설정을 효과적으로 관리할 수 있다.

또한, 간단한 명령으로 여러 서비스를 손쉽게 실행하고 중지하고 삭제할 수 있다.

docker-compose up
docker-compose down

도커 컴포즈 없이 도커만으로는 구성이 불가능한가?

당연히 가능하다. 도커 컴포즈 없이 도커만 사용하여 개별 컨테이너를 실행하고 관리할 수 있다. 하지만 여러 컨테이너 간의 관계와 설정을 일일히 처리해야 하므로 매우 번거로울 수 있다.

비교해보자

도커 컴포즈를 사용한 경우 (docker-compose.yml)

# webapp 서비스는 웹 애플리케이션을 나타내며 depends_on을 사용해
# database 서비스에 의존함을 명시한다
version: '3'

services:
  webapp:
    image: my-webapp:latest
    ports:
      - "80:80"
    depends_on:
      - database

  database:
    image: postgres:latest
    environment:
      POSTGRES_DB: mydatabase
      POSTGRES_USER: myuser
      POSTGRES_PASSWORD: mypassword

도커만 사용한 경우

docker run -d -p 80:80 --name webapp my-webapp:latest
docker run -d --name database -e POSTGRES_DB=mydatabase -e POSTGRES_USER=myuser -e POSTGRES_PASSWORD=mypassword postgres:latest

웹 애플리케이션 컨테이너가 데이터베이스 컨테이너를 찾을 수 있도록 IP 주소 또는 연결 문자열을 알아내고 수동으로 설정해야한다.

정리

도커 컴포즈를 사용하면 도커만 사용할 때보다 훨씬 쉽게 컨테이너간의 연결을 맺어줄 수 있다. 또한, 하나의 서비스로 묶어서 컨테이너들을 관리하기 쉽고 확장할 수 있다.

Comments