Руководство по мониторингу запущенных, приостановленных и остановленных контейнеров: методы и примеры кода

В мире контейнеризации очень важно отслеживать состояние ваших контейнеров. Независимо от того, работают ли они гладко, приостановлены на техническое обслуживание или вообще остановлены, понимание их состояния имеет решающее значение для эффективного управления контейнерами. В этой статье мы рассмотрим различные методы и приведем примеры кода, которые помогут вам определить количество запущенных, приостановленных и остановленных контейнеров.

Метод 1: Docker CLI
Интерфейс командной строки (CLI) Docker предлагает простой способ получения информации о контейнере. Используя команду docker ps, вы можете просмотреть список всех запущенных контейнеров вместе с их подробностями. Чтобы отфильтровать выходные данные и подсчитать количество запущенных контейнеров, вы можете передать команду grepи wc:

docker ps --format "{{.Status}}" | grep -c "Up"

Чтобы узнать количество приостановленных контейнеров, замените "Up"на "Paused". Аналогичным образом, чтобы подсчитать остановленные контейнеры, измените значение на "Exited".

Метод 2: Docker API с Python
Если вы предпочитаете программный подход, вы можете использовать Docker API для получения информации о контейнере. В этом примере мы будем использовать Python и пакет docker:

import docker
client = docker.from_env()
containers = client.containers.list()
running_count = 0
paused_count = 0
stopped_count = 0
for container in containers:
    if container.status == 'running':
        running_count += 1
    elif container.status == 'paused':
        paused_count += 1
    elif container.status == 'exited':
        stopped_count += 1
print(f"Running containers: {running_count}")
print(f"Paused containers: {paused_count}")
print(f"Stopped containers: {stopped_count}")

Метод 3: API Kubernetes
Если вы работаете с Kubernetes, вы можете использовать его API для мониторинга контейнеров. Используя клиент Kubernetes Python, вы можете запросить у кластера статус контейнера:

from kubernetes import client, config
config.load_kube_config()
v1 = client.CoreV1Api()
running_count = 0
paused_count = 0
stopped_count = 0
pods = v1.list_pod_for_all_namespaces().items
for pod in pods:
    for container in pod.status.container_statuses:
        if container.state.running:
            running_count += 1
        elif container.state.waiting and container.state.waiting.reason == 'ContainerPaused':
            paused_count += 1
        elif container.state.terminated:
            stopped_count += 1
print(f"Running containers: {running_count}")
print(f"Paused containers: {paused_count}")
print(f"Stopped containers: {stopped_count}")

Отслеживание состояния контейнеров необходимо для эффективного управления контейнерами. В этой статье мы рассмотрели три метода определения количества запущенных, приостановленных и остановленных контейнеров. Мы рассмотрели использование Docker CLI, Docker API с Python и API Kubernetes. Используя эти методы и примеры кода, вы можете легко отслеживать состояние ваших контейнеров и обеспечивать бесперебойную работу контейнеров.