mirror of
https://github.com/games-on-whales/LXC2Docker.git
synced 2026-10-16 05:12:04 +00:00
[PR #38] [MERGED] Installable .deb + make it run on modern Proxmox (7.0-pve) kernels #39
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
games-on-whales/LXC2Docker#39
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/games-on-whales/LXC2Docker/pull/38
Author: @JBailes
Created: 5/30/2026
Status: ✅ Merged
Merged: 5/30/2026
Merged by: @JBailes
Base:
main← Head:feat/deb-packaging📝 Commits (5)
37276abfeat(packaging): ship an installable .deb; end users need no build toolchaina4c1224fix(lxc): clone legacy containers by directory copy, not lxc-copy7c5621efix(lxc): daemonize lxc-start (-d) so container start returnsebc55ebfix(api): make statusRecorder pass through Hijack so exec/attach streamaf2927fMerge remote-tracking branch 'origin/main' into tmpmerge📊 Changes
8 files changed (+160 additions, -21 deletions)
View changed files
📝
.github/workflows/ci.yml(+42 -0)📝
Makefile(+26 -1)📝
internal/api/containers.go(+3 -1)📝
internal/api/system.go(+14 -0)📝
internal/lxc/manager.go(+18 -16)➕
packaging/postinst(+22 -0)➕
packaging/prerm(+14 -0)📝
readme.md(+21 -3)📄 Description
Summary
Two things: give docker-lxc-daemon a real binary install path (no build toolchain on the target), and fix three issues that prevented it from running containers on a current Proxmox 9 / 7.0-pve host (kernel 7.0-pve + AppArmor 4.1 tightened mount/socket mediation).
Packaging — install without
liblxc-devPreviously
make installbuilt from source on the target, dragging in Go +liblxc-dev. Those are build-time deps; the daemon only needs the runtime liblxc.make debproduces a.debthatDepends: nftables, lxc-pve | lxc(Recommends skopeo/umoci/pve-container), installs the binary to/usr/bin+ the systemd unit, creates thedockergroup, andConflicts:the real docker packages so it cleanly replaces them on the socket..debevery run, uploads it as an artifact, and attaches it to releases on tags — soapt install ./docker-lxc-daemon_*.debis the supported install..debas primary; build-from-source flagged maintainer/CI-only.Runtime fixes (verified on a 7.0-pve host)
lxc-copy—lxc-copy's directory-backed clone rsyncs through the new mount API (move_detached_mount), which 7.0-pve denies in the daemon's context, hanging then failing container creation. Plain copy works regardless. (create → 201fast.)lxc-start -d— modernlxc-startruns in the foreground by default, so the start call blocked until the container exited. Daemonize so it returns and the wait-for-RUNNING loop completes.Hijackon the loggingstatusRecorder— the embeddedhttp.ResponseWriterinterface hidesHijack, sodocker exec/attach'sUpgrade: tcpconnection hijack returned 500 ("unable to upgrade to tcp"). Add a pass-through.Bug surfaced by packaging
archivePathStatHeaderrendered mtime in local time — the Portainer-compat stat test failed on any non-UTC host (CI is UTC, which hid it). Format mtime as UTC.Validation
On a Proxmox 9 / 7.0-pve host:
docker create+docker startbring an LXC container Up in <0.5s,docker execstreams, OCI pulls work, and postgres runs with its AF_UNIX socket bound (database system is ready to accept connections) — the exact case the kernel denies for Docker's apparmor-confined containers.go vetclean;make test-build+make test-unitgreen.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.