본문 바로가기

IT 인프라

도커 데몬, 도커 컴포즈(docker compose) 개념, 특징, 명령어

728x90

본 포스팅 범위

도커 이용한 컨테이너 관리 - 도커 시스템 주요 명령어,

도커 컴포즈 - 특징, 구성요소, docker-compose.yml, 명령어와 이용 목적,

참고자료


도커 이용한 컨테이너 관리

도커 데몬 주요 명령어

$ docker system info : 도커 시스템 관련 정보(OS, CPUs, registry, ... 등)

$ docker system events (alias 건 것) : docker 실행 과정 등 진행 상황(우측 이미지) 따른 로그 확인 가능(좌측이미지)

$ docker system df : 도커 시스템 디스크 사용량, 리눅스 df처럼. RECLAIMABLE은 자원회수율 의미. -v옵션은 상세화.

$ docker system prune : 도커 시스템 저장공간 확보 위한 중지/삭제 등. (주의필요, 강사님도 실습당시에 사용하지 않음)

$ docker stats : 각 컨테이너에 사용 중인 자원들의 cpu, mem, limit, net 값 등을 확인 가능함

 

도커 컴포즈

도커 컴포즈는 무엇인가.

단일 서버에서 여러 컨테이너를 프로젝트 단위로 관리해준다. docker-compose.yml YAML 파일로 명시적 관리를 해준다. 도커 컴포즈 내 네트워크, 볼륨도 포함되고, 서비스들도 관리하는데 이들 의존성을 정의해준다(순서)

1) 프로젝트 단위로 도커 네트워크와 볼륨을 관리하고,

2) 프로젝트 내 서비스 간 의존성 정의를 가능케 하고,

3) 프로젝트 내 서비스 디스커버리*를 자동화 시킨다. 그리고

4) 손 쉬운 컨테이너 수평 확장을 가능케 한다.

*서비스 디스커버리 : 도커 컴포즈 내 서비스 명으로 해당 서비스 넷웤 상 호출하는 것.

 

도커 컴포즈 구성요소(프로젝트, 서비스, 컨테이너)

도커 컴포즈는 컨테이너를 프로젝트와 서비스 단위로 구분하기 때문에 이 구성으로 되어있다.

플젝명_서비스명_컨테이너번호. 하나의 프로젝트는 여러 서비스로 구성된다. 

1) 프로젝트(Project)

도커 컴포즈에서 다루는 워크스페이스 단위. 서비스 컨테이너의 묶음. 프로젝트 단위로 기본 도커 네트워크가 생성된다.

- 프로젝트 명세는 docker-compose.yaml 파일에서 확인 가능함.

 

2) 서비스(Service)

도커 컴포즈에서 컨테이너를 관리하기 위한 단위. scale 통해 서비스 컨테이너 수 확장 가능하다. (scale=3 으로 확장시키면 컨테이너 3개로 확장됨)

 

3) 컨테이너(Container)

서비스 통해 컨테이너 관리.

 

docker-compose.yml 파일

최상위 옵션 : version, services, networks, volumes 

도커 엔진과 도커 컴포즈 버전에 따른 호환성 매트릭스* 참조 필수! 

*호환성 매트릭스 : 공식 사이트 compose file reference 페이지 참고

버전 3 이상부터 docker swam과 호환되어, Swarm 서비스를 docker-compose.yml로 설정 가능하다. 이 때 해당 옵션이 swarm에서인지, 컴포즈에서 적용되는지 확인 필요하다. 예를 들어 특정 옵션은 swarm 에서만 사용하는 옵션이기 때문. docker stack 과 관련된 옵션은 대부분 swarm 옵션이다.

 

도커 스왐(Docker Swarm) : 여러 서버의 스왕 클러스터를 형성해 컨테이너를 관리하는 컨테이너 오케스트레이션 시스템. 쿠버네티스와 동일 목적으로 만들어졌으나 점유율은 작다.

 

 

도커 컴포즈 주요 명령어

$ docker-composer  : 도커 컴포즈에서 사용가능한 명령어 리스트 출력

 

$ docker-compose up : 이미지 받아오거나 실행

$ docker-compose up : Foreground로 도커 컴포즈 프로젝트 실행

$ docker-compose up -d : Background로 도커 컴포즈 프로젝트 실행

$ docker-compose -p my-project up -d  :  프로젝트 이름 my-project로 변경하여 도커 컴포즈 프로젝트 실행

$ docker-compose down  : 프로젝트 내 컨테이너 및 네트워크 종료 및 제거

$ docker-compose down -v :  프로젝트 내 컨테이너, 네트워크 및 볼륨 종료 및 제거 

 

$ docker-composer logs  : 프로젝트 내 서비스 로그 확인

$ docker-composer events  : 프로젝트 내 컨테이너 이벤트 확인

$ docker-composer -p [프로젝트명] images  :  프로젝트 내 이미지 목록

$ docker-composer -p [프로젝트명] ps  : 프로젝트 내 컨테이너 목록

$ docker-composer -p [프로젝트명] top  : 프로젝트 내 실행중인 프로세스 목록

 

 

도커 컴포즈 주요 사용 목적

1. 로컬 개발 환경 구성

특정 프로젝트의 로컬 개발 환경 구성 목적 사용. 프로젝트의 의존성(Redis, MySQL, Kafka 등)을 쉽게 띄울 수 있다.

 

2. 자동화된 테스트환경 구성

CI/CD 파이프라인 중 쉽게 격리된 테스트 환경 구성해 수행 가능하다.

 

3. 단일 호스트(서버) 내 컨테이너 선언적 관리 가능

 

 

참고자료

컨테이너 이미지에 대한 공식 가이드에서 확인하는 방법도 연습해야함. 현업에서 사용하는 경우가 왕왕 있음. 나는 패스 ㅎ

 

Grafana 도커 가이드 https://hub.docker.com/_/mysq

MySQL  도커 가이드 : https://hub.docker.com/_/mysql 

 


패스트캠퍼스 박병진 강사님 강의 중 중요하다고 생각되는 부분을 정리합니다. 개인적 관점이 추가될 수 있습니다.

 

함께보면 좋을 글

컨테이너 기술의 발전과 minikube 기본 명령어

도커 구성요소, 이미지와 컨테이너, 명령어 그리고 컨테이너 다루기 위한 기능(엔트리포인트, 로그 등)

도커 이미지 다루기 : 빌드, dockerfile, 저장소, 이미지 경량화 전략

 

끝.

728x90