<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>Raymond P. Burkholder - Things I Do - LXC</title>
    <link>http://blog.raymond.burkholder.net/</link>
    <description>In And Around Technology and The Arts</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.7.2 - http://www.s9y.org/</generator>
    <pubDate>Mon, 27 Apr 2026 03:17:03 GMT</pubDate>

    <image>
        <url>http://blog.raymond.burkholder.net/templates/bulletproof/img/s9y_banner_small.png</url>
        <title>RSS: Raymond P. Burkholder - Things I Do - LXC - In And Around Technology and The Arts</title>
        <link>http://blog.raymond.burkholder.net/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Some Tools to Add</title>
    <link>http://blog.raymond.burkholder.net/index.php?/archives/1353-Some-Tools-to-Add.html</link>
            <category>LXC</category>
    
    <comments>http://blog.raymond.burkholder.net/index.php?/archives/1353-Some-Tools-to-Add.html#comments</comments>
    <wfw:comment>http://blog.raymond.burkholder.net/wfwcomment.php?cid=1353</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.raymond.burkholder.net/rss.php?version=2.0&amp;type=comments&amp;cid=1353</wfw:commentRss>
    

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.xda-developers.com/finally-found-local-llm-i-want-to-use-every-day/&quot; target=_blank&gt;Qwen 3.5 9B&lt;/a&gt; - general purpose locally run LLM
  &lt;li&gt;&lt;a href=&quot;https://community-scripts.org/scripts/octoprint?id=octoprint&quot; target=_blank&gt;OctoPrint&lt;/a&gt; - web-based 3D printer control software that allows you to remotely control and monitor your 3D printer from a web interface. It was designed to be compatible with a wide range of 3D printers.
  &lt;li&gt;&lt;a href=&quot;https://community-scripts.org/scripts/trilium?id=trilium&quot; target=_blank&gt;Trilium Notes&lt;/a&gt; -  self-hosted note-taking and personal knowledge management application. It enables users to organize information in a hierarchical tree structure and supports rich text editing, internal linking, images, attachments, and powerful scripting capabilities. This version reflects the most current development efforts under the TriliumNext organization and replaces all prior forks or legacy variants. Trilium is ideal for building personal wikis, structured documentation, and long-term knowledge archives, giving users full local control and privacy.
  &lt;li&gt;&lt;a href=&quot;https://community-scripts.org/scripts/vaultwarden?id=vaultwarden&quot; target=_blank&gt;Vaultwarden&lt;/a&gt; - self-hosted password manager which provides secure and encrypted password storage. It uses client-side encryption and provides access to passwords through a web interface and mobile apps.
  &lt;li&gt;&lt;a href=&quot;https://community-scripts.org/scripts/netbox?id=netbox&quot; target=_blank&gt;NetBox&lt;/a&gt; - the source of truth for everything on your network, from physical components like power systems and cabling to virtual assets like IP addresses and VLANs. Network automation and observability tools depend on NetBox’s authoritative data to roll out configurations, monitor changes, and accelerate operations across the enterprise
  &lt;li&gt;&lt;a href=&quot;&quot; target=_blank&gt;&lt;/a&gt;
  &lt;/ul&gt; 
    </content:encoded>

    <pubDate>Mon, 27 Apr 2026 03:17:03 +0000</pubDate>
    <guid isPermaLink="false">http://blog.raymond.burkholder.net/index.php?/archives/1353-guid.html</guid>
    
</item>
<item>
    <title>LXC Fresh Container Construction From Scratch for Proxmox</title>
    <link>http://blog.raymond.burkholder.net/index.php?/archives/1335-LXC-Fresh-Container-Construction-From-Scratch-for-Proxmox.html</link>
            <category>Containers</category>
            <category>Debian</category>
            <category>LXC</category>
            <category>Proxmox</category>
    
    <comments>http://blog.raymond.burkholder.net/index.php?/archives/1335-LXC-Fresh-Container-Construction-From-Scratch-for-Proxmox.html#comments</comments>
    <wfw:comment>http://blog.raymond.burkholder.net/wfwcomment.php?cid=1335</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.raymond.burkholder.net/rss.php?version=2.0&amp;type=comments&amp;cid=1335</wfw:commentRss>
    

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;There are many articles available which discuss customizing a pre-existing Proxmox Container Template.  Few, if any, discuss constructing an LXC container from scratch.  Maybe because, fundamentally, a container template is just the rootfs as tarball, so building it is quite easy:

&lt;ul&gt;
  &lt;li&gt;Build a linux based virtual machine, I use Debian&#039;s recent release
  &lt;li&gt;Install LXC and its template package
  &lt;li&gt;Construct and initialize an LXC container
  &lt;li&gt;Shut it down and and zip it up
  &lt;li&gt;Copy it over to the ProxMox template directory
  &lt;/ul&gt;

&lt;p&gt;The details:

&lt;blockquote&gt;&lt;pre&gt;
# build the linux vm - details not relevant here
# ssh into the vm, or start a command line
# install basic packages

sudo apt install --no-install-recommends lxc lxc-templates xz-utils bridge-utils wget debootstrap rsync

# basic container templates are in:
#   /usr/share/lxc/templates/ 
# for debian as well as other distributions

# create an lxc container, provide a list any additional packages

lxc-create --template debian --name trixie-template -- --release trixie --packages iputils-ping,vim-tiny

# start and attach to the container
lxc-start trixie-template
lxc-attach trixie-template

# prepare for generating template
apt clean
apt purge

# Remove SSH host keys to ensure unique keys for each clone:
rm /etc/ssh/ssh_host_*

# Empty the machine ID file:
truncate -s 0 /etc/machine-id

# clear history
unset HISTFILE
# truncate history
history -c
&gt; ~/.bash_history
# the following has a space in front to prevent inclusion in the history
 shutdown -h now

# the shutdown returns to the virtual machine&#039;s prompt
# compress the directory structure

cd /var/lib/lxc/trixie-template/

# remove /dev files as they can&#039;t be created in an unprivileged container
# an example error message if not removed:
#   tar: ./rootfs/dev/urandom: Cannot mknod: Operation not permitted
# construction of a new container will re-create the directory and files

rm ./rootfs/dev/ptmx
rm ./rootfs/dev/zero
rm ./rootfs/dev/tty3
rm ./rootfs/dev/urandom
rm ./rootfs/dev/null
rm ./rootfs/dev/tty
rm ./rootfs/dev/console
rm ./rootfs/dev/tty4
rm ./rootfs/dev/tty2
rm ./rootfs/dev/random
rm ./rootfs/dev/tty1
rm ./rootfs/dev/full

# cd into rootfs and zip the container

cd rootfs
tar --xz --acls --numeric-owner -cf /var/local/trixie-13-3-template.tar.xz ./

# the xz file can be copied over to proxmox and placed into
# /var/lib/pve/local-btrfs/template/cache/
# for use as a template for container creation
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;During the first use of lxc-create to create the original container, packages are downloaded and installed to build the container.
The packages and installation is cached for faster subsequent builds of the same container type.

&lt;p&gt;If the cache becomes stale, it can be rebuilt by using --flush-cache in a manner similar to:

&lt;blockquote&gt;&lt;pre&gt;
lxc-create --template debian --name trixie-template -- --release trixie --flush-cache --packages iputils-ping,vim-tiny,less,python-minimal
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;An existing cache can be updated with something like:

&lt;blockquote&gt;&lt;pre&gt;
sudo chroot /var/cache/lxc/debian/rootfs-trixie-amd64
apt-get update
apt-get dist-upgrade
apt-get clean
exit
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;courtesy of &lt;a href=&quot;https://www.tomechangosubanana.com/2015/updating-lxc-imagecontainer-caches/&quot; target=_blank&gt;Updating lxc image/container caches&lt;/a&gt;

&lt;p&gt;One other note, there are two package candidates for installing the &lt;a href=&quot;https://unix.stackexchange.com/questions/400351/what-are-the-differences-between-iputils-ping-and-inetutils-ping&quot; target=_blank&gt;ping utility&lt;/a&gt;:

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://packages.debian.org/trixie/iputils-ping&quot; target=_blank&gt;iputils-ping&lt;/a&gt; - native Linux ping, preferred for Debian/Linux
  &lt;li&gt;&lt;a href=&quot;https://packages.debian.org/trixie/inetutils-ping&quot; target=_blank&gt;inetutils-ping&lt;/a&gt; - general gnu version, used on a variety of posix sytstems, less preferred
  &lt;/ul&gt;

&lt;p&gt;Some fix-ups in the process:

&lt;ul&gt;
  &lt;li&gt;apt-get install less
  &lt;li&gt;dpkg-reconfigure locales
  &lt;li&gt;useradd user
  &lt;/ul&gt;

 
    </content:encoded>

    <pubDate>Fri, 27 Feb 2026 21:03:19 +0000</pubDate>
    <guid isPermaLink="false">http://blog.raymond.burkholder.net/index.php?/archives/1335-guid.html</guid>
    
</item>
<item>
    <title>Docker Installation In LXC on ProxMox</title>
    <link>http://blog.raymond.burkholder.net/index.php?/archives/1346-Docker-Installation-In-LXC-on-ProxMox.html</link>
            <category>Docker</category>
            <category>LXC</category>
            <category>Proxmox</category>
    
    <comments>http://blog.raymond.burkholder.net/index.php?/archives/1346-Docker-Installation-In-LXC-on-ProxMox.html#comments</comments>
    <wfw:comment>http://blog.raymond.burkholder.net/wfwcomment.php?cid=1346</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.raymond.burkholder.net/rss.php?version=2.0&amp;type=comments&amp;cid=1346</wfw:commentRss>
    

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;First of all, the obligatory caveat from 2023: &lt;a href=&quot;https://forum.proxmox.com/threads/updating-proxmox-breaks-docker-lxc.126720/?ref=benheater.com#post-553701&quot; target=_blank&gt;where Proxmox developers discourage running Docker in LXC&lt;/a&gt;.  Upgrades to Proxmox may break &#039;something&#039;, which will require remediation of the containers.  The relationship between Proxmox, LXC and Docker is brittle.

&lt;p&gt;I do totally agree not to install Docker directly on the Proxmox host, as Docker will conflict with many networking and functional operations.

&lt;p&gt;However, the combination of Docker in LXC is just too enticing.  What other mechanism is available to compartmentalize applications and provide GPU resources to each compartmentalized application, particularly when an application is packaged as a Docker container, without recourse for building a native LXC container of the application?  Putting LXC and Docker into a VM seems a bit &#039;heavy&#039; just for the sake of softening some brittleness.  All the same management has to take place within the VM.

&lt;p&gt;The key benefit is that devices such as one or more GPUs can be passed through to multiple LXC containers plus any nested docker containers. Otherwise, in the scenario where the GPU or PCIe device is passed through to a VM, as far as I know, it has to be dedicated to the VM.  I&#039;ve read that the devices can not be shared between a VM and LXC containers due to configuration differences between VM pass-through and LXC pass-through.

&lt;p&gt;Given the caveat, I&#039;ll see if I can make this work.  Not so easy.  Trying to run
&lt;blockquote&gt;&lt;pre&gt;
docker run --rm hello-world
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;Yields an error:
&lt;blockquote&gt;&lt;pre&gt;
docker: Error response from daemon: failed to mount /tmp/containerd-mount2030888385: 
mount source: &quot;overlay&quot;, target: &quot;/tmp/containerd-mount2030888385&quot;, 
fstype: overlay, flags: 0, 
data: &quot;
  workdir=/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/3/work,
  upperdir=/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/3/fs,
  lowerdir=/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/2/fs,userxattr&quot;, 
  err: permission denied
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;With an associated apparmor error in Proxmox:
&lt;blockquote&gt;&lt;pre&gt;
audit: type=1400 audit(1774803476.655:145): 
  apparmor=&quot;DENIED&quot; operation=&quot;mount&quot; class=&quot;mount&quot; info=&quot;failed perms check&quot; error=-13 
  profile=&quot;lxc-131_&lt;/var/lib/lxc&gt;&quot; 
  name=&quot;/tmp/containerd-mount2030888385/&quot; 
  pid=1480790 comm=&quot;dockerd&quot; fstype=&quot;overlay&quot; srcname=&quot;overlay&quot;
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;The simple solution is to set &lt;b&gt;nesting=1&lt;/b&gt; in the proxmox lxc options.

&lt;p&gt;The next hurdle is that it may take a couple/several minutes for the Docker file to run when the container starts up.  If so, you may see this:
&lt;blockquote&gt;&lt;pre&gt;
&gt; ps aux
root      41  0.0  0.0   2680  1808 ?    Ss   20:09   0:00 /bin/sh /usr/lib/ifupdown/wait-online.sh
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;If so, this can be disabled:
&lt;blockquote&gt;&lt;pre&gt;
systemctl disable ifupdown-wait-online.service
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;In addition, systemd-networkd-wait-online may be waiting for an interface it doesn&#039;t manage.  This will cause a startup delay of several minutes.  Use the following to add some debugging and logging
&lt;blockquote&gt;&lt;pre&gt;
systemctl edit systemd-networkd-wait-online.service

[Service]
Environment=SYSTEMD_LOG_LEVEL=debug
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;In my case, I then saw something like:
&lt;blockquote&gt;&lt;pre&gt;
root@frigate01:~# systemctl status systemd-networkd-wait-online.service
● systemd-networkd-wait-online.service - Wait for Network to be Configured

Mar 29 20:38:44 frigate01 systemd-networkd-wait-online[97]: lo: link is ignored
Mar 29 20:38:44 frigate01 systemd-networkd-wait-online[97]: vlan60: link is not managed by networkd.
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;I have used a non-standard interface name. I resolved this by updating the edit with the following:
&lt;blockquote&gt;&lt;pre&gt;
&gt; systemctl edit systemd-networkd-wait-online.service

[Service]
ExecStart=
ExecStart=/usr/lib/systemd/systemd-networkd-wait-online --interface=vlan60
#Environment=SYSTEMD_LOG_LEVEL=debug
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;The empty ExecStart line clears the original command parameters.

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.baeldung.com/linux/systemd-networkd-wait-online-service-timeout-solution&quot; target=_blank&gt;How to Fix systemd-networkd-wait-online Service Timing Out During Boot&lt;/a&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.man7.org/linux/man-pages/man8/systemd-networkd-wait-online.8.html&quot; target=_blank&gt;systemd-networkd-wait-online.service(8) — Linux manual page&lt;/a&gt;
  &lt;li&gt;
  &lt;/ul&gt;

&lt;p&gt;Some Docker commands:
&lt;blockquote&gt;&lt;pre&gt;
docker run --rm -it hello-world bash
&lt;/pre&gt;&lt;/blockquote&gt;

 
    </content:encoded>

    <pubDate>Sun, 29 Mar 2026 17:26:11 +0000</pubDate>
    <guid isPermaLink="false">http://blog.raymond.burkholder.net/index.php?/archives/1346-guid.html</guid>
    
</item>
<item>
    <title>Docker Installation</title>
    <link>http://blog.raymond.burkholder.net/index.php?/archives/1345-Docker-Installation.html</link>
            <category>LXC</category>
    
    <comments>http://blog.raymond.burkholder.net/index.php?/archives/1345-Docker-Installation.html#comments</comments>
    <wfw:comment>http://blog.raymond.burkholder.net/wfwcomment.php?cid=1345</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.raymond.burkholder.net/rss.php?version=2.0&amp;type=comments&amp;cid=1345</wfw:commentRss>
    

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;Docker installation is easy enough:

&lt;blockquote&gt;&lt;pre&gt;
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;This installs the latest stable release of:

&lt;ul&gt;
  &lt;li&gt;Docker CLI, 
  &lt;li&gt;Docker Engine,
  &lt;li&gt;Docker Buildx, 
  &lt;li&gt;Docker Compose, 
  &lt;li&gt;containerd, and 
  &lt;li&gt;runc.
  &lt;/ul&gt;

&lt;p&gt;To get an idea of usage:

&lt;blockquote&gt;&lt;pre&gt;
sh -c docker version
&lt;/pre&gt;&lt;/blockquote&gt;
 
    </content:encoded>

    <pubDate>Sun, 29 Mar 2026 15:32:27 +0000</pubDate>
    <guid isPermaLink="false">http://blog.raymond.burkholder.net/index.php?/archives/1345-guid.html</guid>
    
</item>
<item>
    <title>lxc-create of debian testing on debian trixie</title>
    <link>http://blog.raymond.burkholder.net/index.php?/archives/1340-lxc-create-of-debian-testing-on-debian-trixie.html</link>
            <category>Debian</category>
            <category>LXC</category>
    
    <comments>http://blog.raymond.burkholder.net/index.php?/archives/1340-lxc-create-of-debian-testing-on-debian-trixie.html#comments</comments>
    <wfw:comment>http://blog.raymond.burkholder.net/wfwcomment.php?cid=1340</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.raymond.burkholder.net/rss.php?version=2.0&amp;type=comments&amp;cid=1340</wfw:commentRss>
    

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;When creating a Debian testing/forky LXC container on a Debian trixie machine, the following error may be encountered in the output:

&lt;blockquote&gt;&lt;pre&gt;
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
I: Checking component main on http://deb.debian.org/debian...
E: Couldn&#039;t find these debs: isc-dhcp-client
Failed to download the rootfs, aborting.
Failed to download &#039;debian base&#039;
failed to install debian
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;This is a result of &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1125011&quot; target=_blank&gt;bug #1125011&lt;/a&gt; in the Debian bug tracker.

&lt;p&gt;There are several possible solutions:
&lt;ul&gt;
  &lt;li&gt;Manually apply the patches supplied by the &lt;a href=&quot;https://salsa.debian.org/lxc-team/lxc-templates/-/merge_requests/5/commits&quot; target=_blank&gt;Debian LXC team&lt;/a&gt;
  &lt;li&gt;Probably might be solved by running lxc-create on a testing/forky machine, where the solution may have already been applied - I have not confirmed this
  &lt;li&gt;Or it may work on a sid machine
  &lt;/ul&gt; 
    </content:encoded>

    <pubDate>Tue, 17 Mar 2026 03:10:34 +0000</pubDate>
    <guid isPermaLink="false">http://blog.raymond.burkholder.net/index.php?/archives/1340-guid.html</guid>
    
</item>
<item>
    <title>apparmor=&quot;DENIED&quot; operation=&quot;mount&quot; class=&quot;mount&quot; info=&quot;failed perms check&quot; error=-13 </title>
    <link>http://blog.raymond.burkholder.net/index.php?/archives/1338-apparmorDENIED-operationmount-classmount-infofailed-perms-check-error-13.html</link>
            <category>Debian</category>
            <category>LXC</category>
            <category>Proxmox</category>
    
    <comments>http://blog.raymond.burkholder.net/index.php?/archives/1338-apparmorDENIED-operationmount-classmount-infofailed-perms-check-error-13.html#comments</comments>
    <wfw:comment>http://blog.raymond.burkholder.net/wfwcomment.php?cid=1338</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.raymond.burkholder.net/rss.php?version=2.0&amp;type=comments&amp;cid=1338</wfw:commentRss>
    

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;After following my own instructions for building my own LXC container template for ProxMox using the SID release, when the container started, the ProxMox logs would fill up with errors along the lines of:

&lt;blockquote&gt;&lt;pre&gt;
apparmor=&quot;DENIED&quot; operation=&quot;mount&quot; class=&quot;mount&quot; info=&quot;failed flags match&quot; error=-13 name=&quot;/run/credentials/systemd-journald.service/&quot; flags=&quot;rw, move&quot;
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;My Trixie template did not seem to offer up these types of errors.  LXC containers were created with the &#039;Unpriviledged Container&quot; setting to 1|yes.

&lt;p&gt;Instead of going the last resort brute force and ignorance route of using the following configuration (see &lt;a href=&quot;https://github.com/russmorefield/lxc-docker-fix&quot; target=_blank&gt;Fixing net.ipv4.ip_unprivileged_port_start and AppArmor Docker Errors in a Proxmox LXC&lt;/a&gt; for some background):

&lt;blockquote&gt;&lt;pre&gt;
lxc.apparmor.profile: unconfined
features: keyctl=1,nesting=1
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;I took a more nuanced/detailed approach.  &lt;a href=&quot;https://bobcares.com/blog/apparmor-denied-operation-mount-info-failed-flags-match-error-13/&quot; target=_blank&gt;AppArmor Denied Operation mount info failed flags match Error 13&lt;/a&gt; provided a starting point for developing a solution.

&lt;p&gt;After incrementally adding rules as new Apparmor DENIED statements occurred, this is the rule set which seems to resolve the errors.  Once the container is created, these are the rules I add to the end of /etc/pve/lxc/&amp;lt;vmid&amp;gt;.conf:

&lt;blockquote&gt;&lt;pre&gt;
lxc.apparmor.raw: mount options=(rw,move) -&gt; /run/credentials/{,**},
lxc.apparmor.raw: mount options=(ro, remount, noatime, bind) -&gt; /,
lxc.apparmor.raw: mount options=(ro, remount, bind) -&gt; /dev/,
lxc.apparmor.raw: mount options=(rw, move) -&gt; /dev/mqueue/,
lxc.apparmor.raw: mount options=(rw, move) -&gt; /tmp/,
lxc.apparmor.raw: mount options=(rw, move) -&gt; /run/systemd/mount-rootfs/proc/,
lxc.apparmor.raw: mount options=(ro, nosuid, nodev, noexec, remount, nosymfollow, bind) -&gt; /run/systemd/mount-rootfs/run/credentials/systemd-networkd.service/,
lxc.apparmor.raw: mount options=(rw, nosuid, nodev, noexec, remount, bind) -&gt; /run/systemd/mount-rootfs/proc/sys/net/,
lxc.apparmor.raw: mount options=(rw, nosuid, nodev, noexec, remount, bind) -&gt; /run/systemd/mount-rootfs/proc/uptime,
lxc.apparmor.raw: mount options=(rw, nosuid, nodev, noexec, remount, bind) -&gt; /run/systemd/mount-rootfs/proc/slabinfo,
lxc.apparmor.raw: mount options=(rw, nosuid, nodev, noexec, remount, bind) -&gt; /run/systemd/mount-rootfs/proc/meminfo,
lxc.apparmor.raw: mount options=(rw, nosuid, nodev, noexec, remount, bind) -&gt; /run/systemd/mount-rootfs/proc/swaps,
lxc.apparmor.raw: mount options=(rw, nosuid, nodev, noexec, remount, bind) -&gt; /run/systemd/mount-rootfs/proc/loadavg,
lxc.apparmor.raw: mount options=(rw, nosuid, nodev, noexec, remount, bind) -&gt; /run/systemd/mount-rootfs/proc/cpuinfo,
lxc.apparmor.raw: mount options=(rw, nosuid, nodev, noexec, remount, bind) -&gt; /run/systemd/mount-rootfs/proc/diskstats,
lxc.apparmor.raw: mount options=(rw, nosuid, nodev, noexec, remount, bind) -&gt; /run/systemd/mount-rootfs/proc/,
lxc.apparmor.raw: mount options=(rw, nosuid, nodev, noexec, remount, bind) -&gt; /run/systemd/mount-rootfs/proc/stat,
lxc.apparmor.raw: userns create,
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;Restart the container, and the errors should no longer occur.

&lt;p&gt;Don&#039;t try to place statements in /var/lib/lxc/&amp;lt;vmid&amp;gt;/config as it is over-written by ProxMox upon container startup.  Rules are appended to that configuration.

&lt;p&gt;I used the following for a trixie v13.3 version of a container:

&lt;blockquote&gt;&lt;pre&gt;
lxc.apparmor.raw: mount fstype=ramfs -&gt; /dev/shm/,
lxc.apparmor.raw: mount options=(ro, nosuid, nodev, noexec, remount, nosymfollow, bind) -&gt; /dev/shm/,
lxc.apparmor.raw: mount options=(ro, remount, bind) -&gt; /dev/,
lxc.apparmor.raw: mount options=(rw, move) -&gt; /dev/mqueue/,
lxc.apparmor.raw: mount options=(rw, move) -&gt; /run/lock/,
lxc.apparmor.raw: mount options=(rw, move) -&gt; /tmp/,
lxc.apparmor.raw: mount options=(ro, remount, noatime, bind) -&gt; /,
lxc.apparmor.raw: mount options=(ro, nosuid, nodev, noexec, remount, nosymfollow, bind) -&gt; /run/systemd/mount-rootfs/run/credentials/systemd-networkd.service/,
lxc.apparmor.raw: userns create,
lxc.apparmor.raw: mount options=(rw, nosuid, nodev, noexec) -&gt; /run/systemd/namespace-{,**},
lxc.apparmor.raw: mount options=(rw, nosuid, nodev, noexec, remount, bind) -&gt; /run/systemd/mount-rootfs/proc/sys/net/,
lxc.apparmor.raw: mount options=(rw, nosuid, nodev, noexec, remount, bind) -&gt; /run/systemd/mount-rootfs/proc/uptime,
lxc.apparmor.raw: mount options=(rw, nosuid, nodev, noexec, remount, bind) -&gt; /run/systemd/mount-rootfs/proc/slabinfo,
lxc.apparmor.raw: mount options=(rw, nosuid, nodev, noexec, remount, bind) -&gt; /run/systemd/mount-rootfs/proc/meminfo,
lxc.apparmor.raw: mount options=(rw, nosuid, nodev, noexec, remount, bind) -&gt; /run/systemd/mount-rootfs/proc/swaps,
lxc.apparmor.raw: mount options=(rw, nosuid, nodev, noexec, remount, bind) -&gt; /run/systemd/mount-rootfs/proc/loadavg,
lxc.apparmor.raw: mount options=(rw, nosuid, nodev, noexec, remount, bind) -&gt; /run/systemd/mount-rootfs/proc/cpuinfo,
lxc.apparmor.raw: mount options=(rw, nosuid, nodev, noexec, remount, bind) -&gt; /run/systemd/mount-rootfs/proc/diskstats,
lxc.apparmor.raw: mount options=(rw, nosuid, nodev, noexec, remount, bind) -&gt; /run/systemd/mount-rootfs/proc/,
lxc.apparmor.raw: mount options=(rw, nosuid, nodev, noexec, remount, bind) -&gt; /run/systemd/mount-rootfs/proc/stat,
lxc.apparmor.raw: mount options=(rw, nosuid, nodev, noexec) -&gt; /run/systemd/unit-root/proc/,
lxc.apparmor.raw: mount options=(ro, nosuid, nodev, noexec) -&gt; /sys/kernel/config/,
lxc.apparmor.raw: mount options=(rw, nosuid, nodev, noexec) -&gt; /sys/kernel/config/,
&lt;/pre&gt;&lt;/blockquote&gt;

 
    </content:encoded>

    <pubDate>Sat, 28 Feb 2026 23:51:54 +0000</pubDate>
    <guid isPermaLink="false">http://blog.raymond.burkholder.net/index.php?/archives/1338-guid.html</guid>
    
</item>
<item>
    <title>Migrating LXC Containers From One Machine To Another</title>
    <link>http://blog.raymond.burkholder.net/index.php?/archives/916-Migrating-LXC-Containers-From-One-Machine-To-Another.html</link>
            <category>LXC</category>
    
    <comments>http://blog.raymond.burkholder.net/index.php?/archives/916-Migrating-LXC-Containers-From-One-Machine-To-Another.html#comments</comments>
    <wfw:comment>http://blog.raymond.burkholder.net/wfwcomment.php?cid=916</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.raymond.burkholder.net/rss.php?version=2.0&amp;type=comments&amp;cid=916</wfw:commentRss>
    

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;For some machines with LXC containers, they have been running for a number of years.  I want to take the easy way out and move the containers from one physical machine to another.  At another time, I will rebuild the containers.

&lt;p&gt;Since I am running BTRFS subvolumes for each container, I could be using BTRFS snapshot/send/receive commands to migrate/copy/replicate subvolumes.  But before attempting that, I wanted to give the &#039;copy&#039; a try.  To do this properly, at the source, use the following -- with numeric-owner being a required paramenter -- command to collect the files:

&lt;blockquote&gt;&lt;pre&gt;
tar --numeric-owner -czvf mycontainer.tar.gz /var/lib/lxc/my_container
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;At the destination, expand that file out:

&lt;blockquote&gt;&lt;pre&gt;
tar --numeric-owner -xzvf mycontainer.tar.gz -C /var/lib/lxc/
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;The &lt;a href=&quot;http://lxc-users.linuxcontainers.narkive.com/ATkcbMOJ/what-is-right-way-to-backup-and-restore-linux-containers&quot; target=_blank&gt;lxc users mailing list&lt;/a&gt; and 
&lt;a href=&quot;https://stackoverflow.com/questions/23427129/how-do-i-backup-move-lxc-containers&quot; target=_blank&gt;Stack OverFlow&lt;/a&gt; were helpful.

&lt;p&gt;Other stuff to do:

&lt;ul&gt;
  &lt;li&gt;Read up on &lt;a href=&quot;http://man7.org/linux/man-pages/man7/cgroups.7.html&quot; target=_blank&gt;CGroups&lt;/a&gt; in the Linux Programmer&#039;s Manual
  &lt;/ul&gt;

&lt;p&gt;In migrating from a very old version of LXC to a much newer version of LXC, I was getting errors.  I needed to run a some debug to get a handle on errors:

&lt;blockquote&gt;&lt;pre&gt;
lxc-start -n container -F --logpriority=DEBUG --logfile log
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;I had errors along the lines of:

&lt;blockquote&gt;&lt;pre&gt;
Activating lvm and md swap...done.
Checking file systems...Segmentation fault (core dumped)
failed (code 139).
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&quot;https://serverfault.com/questions/896524/how-to-fix-filesystem-of-a-lxc-container&quot; target=_blank&gt;ServerFault&lt;/a&gt; had the solution: put &quot;vsyscall=emulate&quot; into /etc/default/grub, run &#039;update-grub&#039; and reboot.  Looks like I need to modernize my containers so I can eliminate this workaround, which may have some security considerations.  There is a &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=891393&quot; target=_blank&gt;Debian Bug&lt;/a&gt; for this.

&lt;p&gt;&lt;a href=&quot;https://einsteinathome.org/content/vsyscall-now-disabled-latest-linux-distros&quot; target=_blank&gt;einstein home&lt;/a&gt; has a blog with some kernel references to the issue, in effect saying: &quot;vsyscall is now disabled on latest linux distros&quot;.  A lengthier LWN article at
&lt;a href=&quot;https://lwn.net/Articles/446528/&quot; target=_blank&gt;On vsyscalls and the vDSO&lt;/a&gt;.  This works with kernel 4.14, my current version, but I see somewhere else that the workaround is entirely removed in kernel 4.15, at least in the Arch world.  At &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=847154&quot; target=_blank&gt;bug 847154&lt;/a&gt;: &quot;This breaks (e)glibc 2.13 and earlier&quot;.

&lt;p&gt;Note, see newer notes at &lt;a href=&quot;https://blog.raymond.burkholder.net/index.php?/archives/1335-LXC-Fresh-Container-Construction-From-Scratch-for-Proxmox.html&quot; target=_blank&gt;LXC Fresh Container Construction From Scratch for Proxmox&lt;/a&gt;. 
    </content:encoded>

    <pubDate>Wed, 04 Apr 2018 15:39:24 +0000</pubDate>
    <guid isPermaLink="false">http://blog.raymond.burkholder.net/index.php?/archives/916-guid.html</guid>
    
</item>

</channel>
</rss>
