docker 라이브러리로 docker 정보 가져오기

Pien·2024년 1월 14일

회사에서 나가는 제품 중 On-premise로 설치형식으로 나가는 제품이 존재한다.
제품은 docker를 이용해 실행하는데, 덕분에 docker를 관리해줄 필요가 생겼다.
python에서 docker라이브러리를 사용하면 손쉽게 docker의 상태를 확인할 수 있다.

docker

설치

$ pip install docker

컨테이너 상태 확인

import docker

# 컨테이너 리스트 조회
def get_containers():
	client = docker.from_env() # 도커 주입
    containers = client.containers.list()
    return containers
    
# cpu 사용률 계산
def cacluate_cpu_percentage(stats):
	total_usage = stats['cpu_stats']['cpu_usage']['total_usage'] 
        prev_total_usage = stats['precpu_stats']['cpu_usage']['total_usage']
        system_cpu_delta = stats['cpu_stats']['system_cpu_usage'] - stats['precpu_stats']['system_cpu_usage']
        cpu_usage_delta = total_usage - prev_total_usage
        cpu_percentage = cpu_usage_delta / system_cpu_delta
        
        return cpu_percentage
        
    # RAM 사용률 계산
def calculate_container_memory_percentage(stats):
    memory_usage = stats['memory_stats']['usage']
    memory_limit = stats['memory_stats']['limit']
    memory_percentage = (memory_usage / memory_limit) * 100

    return memory_percentage
        
def get_container_stats(self, container):
	status = container.status
	stats = {
		'name': container.name,
		'status': status,
		'cpu_percentage': 0,
		'memory_percentage': 0
        }

        # 컨테이너가 실행중일 경우에만 CPU, RAM 사용률 조회
	if status == 'running':
		container_stats = container.stats(stream=False)
		stats['cpu_percentage'] = self.calculate_container_cpu_percentage(container_stats)
		stats['memory_percentage'] = self.calculate_container_memory_percentage(container_stats)

	return stats


이후 docker 정보를 조회하면 위와 같은 정보를 얻을 수 있다.

0개의 댓글