본 포스팅 범위
도커 이용한 컨테이너 관리 - 도커 시스템 주요 명령어,
도커 컴포즈 - 특징, 구성요소, 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
패스트캠퍼스 박병진 강사님 강의 중 중요하다고 생각되는 부분을 정리합니다. 개인적 관점이 추가될 수 있습니다.
함께보면 좋을 글
도커 구성요소, 이미지와 컨테이너, 명령어 그리고 컨테이너 다루기 위한 기능(엔트리포인트, 로그 등)
도커 이미지 다루기 : 빌드, dockerfile, 저장소, 이미지 경량화 전략
끝.
'IT 인프라' 카테고리의 다른 글
CI/CD 개념과 Continuous Delivery, Deploy 차이, 개발관리 툴(Nexus, 소나큐브) (0) | 2022.12.17 |
---|---|
도커, 쿠버네티스, MSA 개념과 활용 (0) | 2022.12.15 |
도커 이미지 다루기 : 빌드, dockerfile, 저장소, 이미지 경량화 전략 (0) | 2022.12.09 |
도커 구성요소, 이미지와 컨테이너, 명령어 그리고 컨테이너 다루기 위한 기능(엔트리포인트, 로그 등) (0) | 2022.12.08 |
git 사용 이유와 간단한 작업(명령어) 개념 정리 (1) | 2022.11.27 |