<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Bringing container visibility back to XO]]></title><description><![CDATA[<p dir="auto">Hey all,</p>
<p dir="auto">Sorry in advance for the wall of (AI assisted) text. This is something I've been sitting on for a while and come back to every few months to see where it's up to so I thought I'd try and get some constructive discussion happening here in the forums <img src="https://xcp-ng.org/forum/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=f084dd9e819" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /></p>
<p dir="auto">For quite some time now, it seems like the "Docker VM" is probably the most common homelab workload on XCP-ng (not to mention some of those other <em>moxie</em> hypervisors), and right now those users get zero visibility in XO 6. Unfortunately, I've actually seen this result in a few peers steering away from XCP-ng/XOA (their loss...).</p>
<p dir="auto">We <em>used</em> to have this feature way back in the pre-covid times, but alas, it is now but a relic. A quick search through the forums surfaces some recurring requests (2361, 2404, 4338, 6845, 7356...) and back in 2019 the answer was already "the Citrix plugin is a dead end, we might use something else" — but that something else never quite materialized.<br />
Meanwhile the broken xscontainer package still ships and the wiki still documents it as a working procedure, so people (i.e me...) keep following the docs into a wall of cryptic tracebacks.<br />
It's safe to assume I went down this rabbit hole (again...not for the first time...), but  eventually I get steered towards patching dom0 Python and downgrading guest sshd crypto, and decide to bail out.<br />
Nobody should do that in 2026.</p>
<p dir="auto">Because upstream XenServer dropped the feature completely, this is a genuine differentiation opportunity rather than legacy maintenance: container visibility in the VM view would be something XCP-ng/XO offers that the commercial upstream simply doesn't (and would also get to parity with that other hypervisor previously alluded to...).</p>
<p dir="auto">With XenServer 8 having removed the Container Management supplemental pack entirely, and the old xscontainer package being effectively broken against any modern guest (the paramiko/ssh-rsa issue from topic 6845, plus a couple more bugs...), I wanted to float a proposal for bringing this feature back properly because I think the pieces to do it right now exist and didn't before.</p>
<p dir="auto">The short version: instead of resurrecting the Python 2 dom0 plugin, add a container collector to the new Rust xen-guest-agent, publishing container state through XenStore the same way the agent already publishes IPs and OS info.<br />
XO 6 reads it like any other guest metric and renders a Containers tab on the VM view. No dom0 code, no SSH from the hypervisor into guests, no network path needed between XO and the guest at all.</p>
<p dir="auto">The old design required user interaction/modification of dom0 (the worst place for anything needing a modern crypto stack), it needed dom0→guest SSH credentials (a trust relationship plenty of admins don't want), and it polled over the network (breaks in segmented setups).</p>
<p dir="auto">The new xen-guest-agent dodges all three by design. It's already built around pluggable collectors (OS, kernel, network, memory today) publishing to XenStore, and the README explicitly says you want it "to become more largely useful" with the collection scope still stabilizing and proposals welcome. A containers collector seems like a natural fit:</p>
<ul>
<li>The guest publishes what it chooses — opt-in, auditable, no credentials held by anyone</li>
<li>Works across any network topology since nothing needs to reach the guest</li>
<li>All the code lives in actively-maintained projects (the agent + xo-server/xo-web)</li>
<li>And it generalizes for free: the same collector could report "this VM is a k8s worker, kubelet healthy, 14 pods" — giving XO a light infra-level view of Kubernetes nodes without pretending to be a k8s dashboard.</li>
<li>Complements the existing k8s recipe rather than competing with kubectl/Lens.</li>
</ul>
<p dir="auto">AI assisted UI Mockup:<br />
<img src="/forum/assets/uploads/files/1787149048530-56868b6c-8deb-4ae0-b760-908c169528bd-image.jpeg" alt="56868b6c-8deb-4ae0-b760-908c169528bd-image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto">Example draft Schema - the real version belongs in the agent's RFC doc discussion. But to make it concrete:</p>
<pre><code>data/containers/version      = 1                  # schema version
data/containers/runtime      = "docker 27.5.1"    # or podman/containerd
data/containers/updated      = 1755640051         # unix ts of last refresh
data/containers/summary      = {"running":4,"exited":1,"paused":0,"images":14}
data/containers/list         = &lt;compact JSON array, one object per container:
                                id (12 chars), name, image, state, ports,
                                cpu_pct, mem_bytes, started_at, health,
                                compose_project?&gt;
data/containers/k8s          = {"role":"worker","cluster":"...","pods":14,
                                "kubelet":"healthy"}   # only if applicable
</code></pre>
<p dir="auto">Practical guardrails baked in: summaries not full docker inspect dumps, a size cap on list (truncate + flag if a VM runs hundreds of containers), refresh every 30–60s with writes only on change, and the whole collector behind a feature flag since it needs docker socket access the base agent doesn't. A typical VM's payload is a few KB.<br />
Lifecycle actions (start/stop/restart) would be nice, but read-only visibility is already most of the value and keeps the security story dead simple.</p>
<p dir="auto">Whatever happens with this proposal, what could be done to update/modify the "Docker in XCP-ng" wiki page?<br />
A "currently broken with modern guests, see topic 6845" banner, or the whole thing just be pulled would be ideal...</p>
<p dir="auto">I suppose I'm wondering if there's any interest out there?<br />
Would you use this?<br />
Anything missing or wrong in the approach?<br />
Is anything like this already on the table or in the works? (The guest agent's own README hints at broadening its collection scope, so maybe this is already somewhere on a roadmap — happy to be told I'm re-imagining the wheel.)<br />
Does the agent seem like the right vehicle, or would you approach this differently?</p>
<p dir="auto">P.S<br />
Thank you to the Vates team, and community members for XCP-ng and XO and for keeping them free and open source and awesome and this community is exactly why this ecosystem is worth contributing to.</p>
]]></description><link>https://xcp-ng.org/forum/topic/12423/bringing-container-visibility-back-to-xo</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 16:54:02 GMT</lastBuildDate><atom:link href="https://xcp-ng.org/forum/topic/12423.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 19 Aug 2026 14:41:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bringing container visibility back to XO on Wed, 19 Aug 2026 15:27:16 GMT]]></title><description><![CDATA[<p dir="auto">I went and checked a couple of the factual bits here rather than take them on trust, and the xscontainer one holds up: <code>xscontainer-10.0.4-1.xcpng8.3.noarch.rpm</code> is still sitting in the 8.3 base repo, and back in topic <a href="https://xcp-ng.org/forum/topic/6845">6845</a> Olivier said it was meant to be removed at some point, which evidently hasn't happened.</p>
<p dir="auto">The wiki page is the bit I couldn't reproduce. There's no Docker or container page in the current docs that I can find, and nothing matching in the docs repo either, so I might be looking in the wrong place. <img src="https://xcp-ng.org/forum/assets/plugins/nodebb-plugin-emoji/emoji/android/1f937.png?v=f084dd9e819" class="not-responsive emoji emoji-android emoji--shrug" style="height:23px;width:auto;vertical-align:middle" title=":shrug:" alt="🤷" /></p>
<p dir="auto">On the proposal, I'm not the right person to say whether a containers collector fits the agent's scope. Two things I can tell you. <code>xen-guest-agent</code> lives on GitLab rather than GitHub, so the design conversation would need to happen there. And there's no Feeder entry for any of this yet, which surprised me given how far back the requests go; worth putting one up so the votes have somewhere to land.</p>
<p dir="auto">That's my read on where it should go rather than on whether it's a good idea, and someone closer to the agent will correct me if I've sent you the wrong way.</p>
]]></description><link>https://xcp-ng.org/forum/post/107950</link><guid isPermaLink="true">https://xcp-ng.org/forum/post/107950</guid><dc:creator><![CDATA[poddingue]]></dc:creator><pubDate>Wed, 19 Aug 2026 15:27:16 GMT</pubDate></item></channel></rss>