파이썬

[파이썬] 도커 컨테이너 정보 출력

IntegerString 2023. 4. 5. 17:37
import docker

필요한 라이브러리 임포트 (https://docker-py.readthedocs.io/en/stable)

 

def add_unit(mem: float) -> str:
    if mem > 1024**3:
        mem = round(mem / 1024**3, 2)
        mem = f"{mem}GiB"
    elif mem > 1024**2:
        mem = round(mem / 1024**2, 2)
        mem = f"{mem}MiB"
    elif mem > 1024:
        mem = round(mem / 1024, 2)
        mem = f"{mem}KiB"
    else:
        mem = round(mem, 2)
        mem = f"{mem}Byte"
    return mem

데이터 단위를 붙여주기 위한 함수

 

client = docker.DockerClient(base_url='unix://var/run/docker.sock')

for container in client.containers.list():
    container_name = container.name
    is_running = container.attrs["State"]["Running"]
    memory_stats = container.stats(stream=False)["memory_stats"]
    now_mem = add_unit(memory_stats["usage"])
    peak_mem = add_unit(memory_stats["max_usage"])
    mem_limit = add_unit(memory_stats["limit"])

    print(
        f"Name: {container_name}\nRunning: {is_running}\n"
        f"Memory(now): {now_mem} / {mem_limit}\nMemory(peak): {peak_mem} / {mem_limit}\n"
    )

출력 결과