모든 것에 앞서 docker를 설치해 주어야 한다.
pip install docker
그리고 vi docker_stats.py (python 파일 이름은 마음대로)
또는 nano docker_stats.py로 python 파일을 수정한다.
Getting started
Docker 데몬과 통신하려면 먼저 클라이언트를 인스턴스화 해야 한다.
from_env()가 기본 소켓 / 환경의 구성을 사용하여 연결할 수 있다.
import docker
client = docker.from_env()
container 관리
# 실행 중인 모든 컨테이너 목록을 가져온다.
client.containers.list()
# 컨테이너의 자원 사용량 정보를 수집한다.
stats = container.stats(stream=False)
전체 코드
import docker
import time
def get_container_stats():
# Docker 클라이언트를 초기화
client = docker.from_env()
# 실행 중인 모든 컨테이너 목록을 가져옴
containers = client.containers.list()
for container in containers:
# 컨테이너의 기본 정보 출력
print(f"Container ID: {container.id}")
print(f"Container Name: {container.name}")
print(f"Container Status: {container.status}")
# 컨테이너의 자원 사용량 정보 수집
stats = container.stats(stream=False)
# CPU 사용량 계산
cpu_usage = stats['cpu_stats']['cpu_usage']['total_usage']
system_cpu_usage = stats['cpu_stats']['system_cpu_usage']
cpu_percent = (cpu_usage / system_cpu_usage) * 100
# 메모리 사용량 계산
mem_usage = stats['memory_stats']['usage']
mem_limit = stats['memory_stats']['limit']
mem_percent = (mem_usage / mem_limit) * 100
# 네트워크 사용량 계산
net_input = stats['networks']['eth0']['rx_bytes']
net_output = stats['networks']['eth0']['tx_bytes']
# 디스크 I/O 계산
io_read = stats['blkio_stats']['io_service_bytes_recursive'][0]['value']
io_write = stats['blkio_stats']['io_service_bytes_recursive'][1]['value']
# 자원 사용량 출력
print(f"CPU Usage: {cpu_percent:.2f}%")
print(f"Memory Usage: {mem_usage} / {mem_limit} ({mem_percent:.2f}%)")
print(f"Network Input: {net_input} bytes")
print(f"Network Output: {net_output} bytes")
print(f"Disk I/O Read: {io_read} bytes")
print(f"Disk I/O Write: {io_write} bytes")
print("-" + "-"*40)
if __name__ == "__main__":
while True:
get_container_stats()
# 10초마다 정보 갱신
time.sleep(10)
python3 docker_stats.py
로 파이썬 파일을 실행시켜주면 결과가 나온다.
docker ps -a
docker stats --no-stream
명령어 결과
'Cloud' 카테고리의 다른 글
[Cloud] AWS Linux 서버에 Docker 설치하기 (0) | 2024.07.15 |
---|---|
[Cloud] VM 서버에서 Python venv 환경 구성하고 python 프로그램 실행시키기 (0) | 2024.05.19 |
[Cloud] mobaXterm으로 Windows에서 Linux 인스턴스 연결하기 (0) | 2024.05.19 |
[Cloud] [Python] pymysql 사용하여 mysql 데이터 삽입하기 (0) | 2024.05.19 |
[Cloud] AWS RDS 데이터베이스 MySQL Workbench로 접속하기 (0) | 2024.05.18 |