devlos
Devlos Archive
devlos
전체 방문자
오늘
어제
12-12 04:30

최근 글

  • 분류 전체보기 (107)
    • 프로젝트 (1)
    • MSA 설계 & 도메인주도 설계 (9)
    • 클라우드 컴퓨팅 & NoSQL (87)
      • [Cilium Study] 실리움 스터디 (8)
      • [KANS] 쿠버네티스 네트워크 심화 스터디 (12)
      • [T101] 테라폼 4기 스터디 (8)
      • [CICD] CICD 맛보기 스터디 (3)
      • [T101] 테라폼 기초 입문 스터디 (6)
      • [AEWS] Amazon EKS 워크숍 스터디 (7)
      • [PKOS] 쿠버네티스 실무 실습 스터디 (7)
      • Kubernetes (13)
      • Docker (7)
      • Redis (1)
      • Jenkins (3)
      • Terraform (1)
      • Ansible (4)
      • Kafka (1)
    • 프로그래밍 (7)
      • Spring Boot (5)
      • Broker (1)
    • 성능과 튜닝 (1)
    • ALM (0)
    • 기타 (2)

인기 글

태그

  • Kubernetes
  • 데브옵스
  • terraform
  • CloudNet@
  • 쿠버네티스 스터디
  • cilium
  • MSA
  • DevOps
  • 도커
  • kOps
  • t101 4기
  • PKOS
  • 테라폼
  • docker
  • 쿠버네티스

티스토리

최근 댓글

hELLO · Designed By 정상우.
devlos

Devlos Archive

[도커(Docker)] 도커 컴포즈(Docker compose) 사용법
클라우드 컴퓨팅 & NoSQL/Docker

[도커(Docker)] 도커 컴포즈(Docker compose) 사용법

2021. 4. 17. 02:18
반응형

이번 포스팅의 주제는 도커 컴포즈(Docker Compose)를 사용하는 방법에 관한 것이다.

 

Overview of Docker Compose

 

docs.docker.com

도커 컴포즈는 여러대의 컨테이너 Docker 애플리케이션을 정의하고 실행하기 위한 도구다. 

YAML 파일을 사용하여 애플리케이션의 서비스를 구성한다.


1. 도커(Docker) 설치

# 도커 설치
$ sudo yum install -y docker

# 도커 서비스 시작
$ sudo systemctl start docker.service

# 도커에 로그인
$ docker login

2. 도커 컴포즈(Docker compose) 설치

# root 계정으로 진입
$ su

# 도커 컴포즈 설치
$ curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 권한 변경
$ chmod +x /usr/local/bin/docker-compose

# 설치 결과 확인
$ docker-compose --version

3. 도커를 실행하기 위한 docker-compose.yml 파일 생성

# docker-compose.yml 파일 생성
$ vi docker-compose.yml

#내용작성
# database container
db:
  image: docker.io/mysql
  ports:
    - "3306:3306"
  environment:
    - MYSQL_ROOT_PASSWORD=password

# application container
app:
  image: docker.io/tomcat
  ports:
    - "8080:8080"

# web container
web:
  image: docker.io/nginx
  ports:
    - "80:80"

4.docker-compose 실행

# 컨테이너 일괄 가동
$ docker-compose up -d

위의 명령어의 -d 옵션은 백그라운드에서 docker-compose에서 실행시키는 컨테이너들이 동작하게 하는 용도이다. 만약 실행에 오류가 발생할 경우 컨테이너들의 로그가 터미널에 그대로 나온다.

 

docker-compose up -d 실행결과

확인된 로그로는 db, web, app 컨테이너들 중에서 web만 error가 발생했다. 이는 이전 단계에서 테스트한 nginx가 동작하면서 80포트를 사용하고 있기 때문이다.

 

아래의 명령어를 이용하여 실행중인 nginx를 중지시켜 80포트를 확보 한 후, 다시 docker-compose를 실행해보면 다음과 같은 결과가 나온다.

 

# nginx 종료
$ nginx -s stop

# 도커 컴포즈 재실행
$ docker-compose up -d

 

docker-compose up -d 재실행 결과

실패한 컨테이너만 다시 실행되는 것을 확인할 수 있다.


5. 컨테이너 실행 상태 확인

$ docker ps

 

docker ps 실행결과

 

docker-compose.yml에 정의된 컨테이너들이 정상적으로 실행중인것을 확인할 수 있다.

도커 컴포즈를 사용하면 이처럼 여러개의 컨테이너를 한번에 실행상태로 만들 수 있다.


지금까지 도커를 사용할 때 항상 각각의 엔티티 마다 이미지를 다운로드하고, 설치하는 작업들을 개별적으로 수행했었다.

다음 서비스 업데이트 배포시에는 docker-compose를 꼭 활용해서 작업을 진행해야겠다. (엄청 편해보인다..)

 

다수의 컨테이너 설치가 편하다는 장점 외에도 복잡한 개발 환경을 yml 형태로 쉽게 공유할 수 있는것도 큰 장점이다.


참고자료

[1] IT 운용 체제 변화를 위한 데브옵스 | 2019 | 키와무라 세이고 ... | 링크

 

 

반응형

'클라우드 컴퓨팅 & NoSQL > Docker' 카테고리의 다른 글

Docker Image 사이즈 줄이기  (1) 2023.04.09
도커 컨테이너(Docker container) 빌드하기  (0) 2021.04.11
도커(Docker) docker run <image>의 실행순서  (0) 2021.04.09
도커(Docker)를 사용하는 이유  (0) 2021.04.08
[Docker] Container 를 사용하는 이유  (0) 2021.03.24
    devlos
    devlos
    안녕하세요, Devlos 입니다. 새로 공부 중인 지식들을 공유하고, 명확히 이해하고자 블로그를 개설했습니다 :) 여러 DEVELOPER 분들과 자유롭게 지식을 공유하고 싶어요! 방문해 주셔서 감사합니다 😀 - DEVLOS -

    티스토리툴바