{# docker/service.html — one swarm service (#5302): its state and what it runs, where its replicas are and what they use, Swarm's record of its recent tasks, its CPU and memory over time, and the logs of every task it has run. A failure's "Logs →" lands on #logs with ?task= picked. #} {% extends "base.html" %} {% from "_macros.html" import crumbs, status_badge, status_dot, stat_tile %} {% from "docker/_usage.html" import cpu, mem, cores %} {% block title %}{{ name }} — Docker — Steward{% endblock %} {% block breadcrumb %}{{ crumbs([("Docker", "/plugins/docker/"), (name, "")]) }}{% endblock %} {% block content %} {% if service is none %}
{{ name }} is reported now; it may have been removed.
The logs Steward still keeps from its tasks are below.
{% else %}
No swarm service named {{ name }} is reported, and Steward holds no logs or
events for one. It may have been removed. Back to Docker
{% endif %}
{% if row.crash_looping %}{{ status_badge('crit', 'Crash-looping') }} {% elif row.state == 'down' %}{{ status_badge('crit', 'Down') }} {% elif row.state == 'degraded' %}{{ status_badge('warn', 'Degraded') }} {% else %}{{ status_badge('ok', 'Healthy') }}{% endif %} {{ row.running }} of {{ row.desired }} running · {{ row.mode }} {%- if stack %} · stack {{ stack }}{% endif %} {%- if row.trouble_since %} · in trouble since {{ row.trouble_since|ago }}{% endif %}
{{ e.error or e.message or e.state }}{% if e.exit_code %} (exit {{ e.exit_code }}){% endif %} {%- if e.node %} · on {{ e.node }}{% endif %}{% if e.age_s is not none %} · {{ e.age_s|duration }} ago{% endif %} {%- if e.task_id %} · its logs →{% endif %}
| Node | Container | Status | CPU | Memory | Up | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ r.host }} | {{ r.count }} running on a node with no Steward agent: no figures for {{ "it" if r.count == 1 else "them" }} | {% else %}{% if r.host_id %}{{ r.host }}{% else %}{{ r.host }}{% endif %} | {{ r.name }} | {{ status_dot('up' if r.status == 'running' else 'down') }} {{ r.status }} {%- if r.health == 'unhealthy' %} {{ status_badge('crit', 'Unhealthy') }}{% elif r.health == 'starting' %} {{ status_badge('pending', 'Starting') }}{% endif %} | {% if r.usage %}{{ cpu(r.usage) }}{% else %}—{% endif %} | {% if r.usage %}{{ mem(r.usage) }}{% else %}—{% endif %} | {{ r.uptime or "—" }} | {% endif %}||||
No replica is running.
{% endif %}Loading…
| Slot | Task | Node | State | Exit | Why | When |
|---|---|---|---|---|---|---|
| {{ t.slot or "—" }} | {% if t.task_id %}{{ t.task_id[:10] }}{% else %}—{% endif %} | {{ t.node }} | {%- if t.failed %}{{ status_badge('crit', t.state|capitalize) }} {%- elif t.current %}{{ status_badge('ok', 'Running') }} {%- else %}{{ t.state }}{% endif %} {%- if t.desired and t.desired != t.state and not t.current %} → {{ t.desired }}{% endif -%} | {% if t.exit_code %}{{ t.exit_code }}{% else %}—{% endif %} | {{ t.why or "" }} | {% if t.at %}{{ t.at|ago }}{% else %}—{% endif %} |
No task record yet: the manager's agent reports them from version 1.8.0.
{% endif %}Loading…