<?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 - Containers</title>
    <link>https://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>Sun, 05 Apr 2026 19:51:12 GMT</pubDate>

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

<item>
    <title>Image Building Notes - debootstrap</title>
    <link>https://blog.raymond.burkholder.net/index.php?/archives/1348-Image-Building-Notes-debootstrap.html</link>
            <category>Containers</category>
    
    <comments>https://blog.raymond.burkholder.net/index.php?/archives/1348-Image-Building-Notes-debootstrap.html#comments</comments>
    <wfw:comment>https://blog.raymond.burkholder.net/wfwcomment.php?cid=1348</wfw:comment>

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

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;APT based distributions like Debian can be containerized with a tool called &lt;a href=&quot;https://packages.debian.org/stable/debootstrap&quot; target=_blank&gt;debootstrap&lt;/a&gt;.  It is part of the image build process of lxc-create.  It is also referenced in Docker &lt;a href=&quot;https://docs.docker.com/build/building/base-images/&quot; target=_blank&gt;Base Images&lt;/a&gt; for building an image from scratch.

&lt;p&gt;When looking at the build scripts included in the package installation, repositories for the following distributions can be found in /usr/share/debootstrap/scripts:

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.debian.org/&quot; target=_blank&gt;debian&lt;/a&gt; - universal operating system
  &lt;li&gt;&lt;a href=&quot;https://trisquel.info/&quot; target=_blank&gt;trisquel&lt;/a&gt; - a distribution of the GNU operating system, with the kernel GNU &lt;a href=&quot;https://www.fsfla.org/ikiwiki/selibre/linux-libre/&quot; _target=_blank&gt;Linux-libre&lt;/a&gt;
  &lt;li&gt;&lt;a href=&quot;https://ubuntu.com/&quot; target=_blank&gt;ubuntu&lt;/a&gt; - modern enterprise open source
  &lt;li&gt;&lt;a href=&quot;https://pardus.org.tr/en&quot; target=_blank&gt;pardus&lt;/a&gt; - Turkish 
  &lt;li&gt;&lt;a href=&quot;https://www.kali.org/&quot; target=_blank&gt;kali&lt;/a&gt; - open-source, Debian-based Linux distribution geared towards various information security tasks, such as Penetration Testing, Security Research, Computer Forensics and Reverse Engineering
  &lt;li&gt;&lt;a href=&quot;https://elxr.org/&quot; target=_blank&gt;elxr&lt;/a&gt; - Enterprise-Grade Linux for Edge-to-Cloud Deployments
  &lt;li&gt;&lt;a href=&quot;https://pureos.net/&quot; target=_blank&gt;pureos&lt;/a&gt; - fully-convergent, user friendly, secure and freedom respecting OS for your daily usage  &lt;/ul&gt;

&lt;p&gt;The &lt;a href=&quot;https://wiki.debian.org/Debootstrap&quot; target=_blank&gt;wiki&lt;/a&gt; shows a simple two liner to get the basics of the distribution in place (as root):

&lt;blockquote&gt;&lt;pre&gt;
mkdir trixie-chroot
debootstrap stable trixie-chroot http://deb.debian.org/debian/
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;Enter the chroot and note new root:

&lt;blockquote&gt;&lt;pre&gt;
root@test:~# pwd
/root
root@test:~# chroot trixie/
root@test:/# pwd
/
root@test:/# exit
exit
root@test:~# pwd
/root
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;After the debootstrap, create the base for docker, and give it a try:

&lt;blockquote&gt;&lt;pre&gt;
tar -C trixie-chroot -c . | docker import - trixie
docker run trixie cat /etc/debian_version
docker run --rm -i -t trixie /bin/bash
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;Although debootstrap can be used to build an image for a version subsequent, it is generally recommended to use debootstrap from at least the desired version to ensure it has the proper updates and dependencies.

&lt;p&gt;Command line to summarize the referenced repositories:

&lt;blockquote&gt;&lt;pre&gt;
grep -h default_mirror /usr/share/debootstrap/scripts/* \
  | sed &#039;s/default_mirror//&#039; \
  | sed &#039;s/[ \t]//g&#039; \
  | sort \
  | uniq
&lt;/pre&gt;&lt;/blockquote&gt; 
    </content:encoded>

    <pubDate>Sun, 05 Apr 2026 17:31:32 +0000</pubDate>
    <guid isPermaLink="false">https://blog.raymond.burkholder.net/index.php?/archives/1348-guid.html</guid>
    
</item>
<item>
    <title>LXC Fresh Container Construction From Scratch for Proxmox</title>
    <link>https://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>https://blog.raymond.burkholder.net/index.php?/archives/1335-LXC-Fresh-Container-Construction-From-Scratch-for-Proxmox.html#comments</comments>
    <wfw:comment>https://blog.raymond.burkholder.net/wfwcomment.php?cid=1335</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://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">https://blog.raymond.burkholder.net/index.php?/archives/1335-guid.html</guid>
    
</item>
<item>
    <title>Talos Install in Preparation for Kubernetes</title>
    <link>https://blog.raymond.burkholder.net/index.php?/archives/1276-Talos-Install-in-Preparation-for-Kubernetes.html</link>
            <category>Containers</category>
    
    <comments>https://blog.raymond.burkholder.net/index.php?/archives/1276-Talos-Install-in-Preparation-for-Kubernetes.html#comments</comments>
    <wfw:comment>https://blog.raymond.burkholder.net/wfwcomment.php?cid=1276</wfw:comment>

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

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;On my ProxMox machine, I need a more dynamic way of handling containers rather than being limited to the LXC flavour offered by ProxMox.  There was a &lt;a href=&quot;https://www.reddit.com/r/homelab/comments/1faqgs4/comment/m4gfos5&quot; target=_blank&gt;question on reddit&lt;/a&gt; to which I supplied an answer about why to use full virtualization for Kubernetes vs running in a container.  In summary:

&lt;ul&gt;
  &lt;li&gt;proxmox is a virtualization engine which enables LXC containers and QEMU/KVM guest virtual machines
  &lt;li&gt;LXC containers are compartmentalized and share direct access to the kernel
  &lt;li&gt;containers are used so as not to pollute your based proxmox installation with more packages and runtimes
  &lt;li&gt;typically, you don&#039;t want to nest containers inside containers
  &lt;li&gt;virtual machines run their own kernel/operating system, and are more secure (failure/security) and independent
  &lt;li&gt;since k8s manages docker containers (not LXC containers), and you don&#039;t want to run containers of any fashion in containers of another fashion (docker inside lxc), you run a virtual machine with k8s to keep k8s packages and runtime separate from the core proxmox runtime environment
  &lt;li&gt;hence the container inside virtual machine on hypervisor platform
  &lt;li&gt;for security and compartmentalization 
  &lt;/ul&gt;

&lt;p&gt;I built a basic LXC management container to take a look at talosctl, then used these instructions to perform a few tests:

&lt;blockquote&gt;&lt;pre&gt;
apt update
apt upgrade
apt install --no-install-recommends curl
# based upon https://www.talos.dev/v1.9/talos-guides/install/talosctl/
curl -sL https://talos.dev/install | sh

# based upon https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/
curl -LO &quot;https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl&quot;
curl -LO &quot;https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256&quot;
echo &quot;$(cat kubectl.sha256)  kubectl&quot; | sha256sum --check
install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
kubectl version --client
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;I ultimately removed this container, as I started reading the &lt;a href=&quot;https://www.talos.dev/v1.9/introduction/getting-started/&quot; target=_blank&gt;Getting Started&lt;/a&gt; Guide.  But the above did generate the information that the lastest talosctl version is v1.9.1, which is useful for generating the iso image required.

&lt;p&gt;.... more to come

&lt;p&gt;Reference:

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.talos.dev/v1.9/introduction/getting-started/&quot; target=_blank&gt;Talos Getting Started&lt;/a&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.talos.dev/v1.9/talos-guides/install/virtualized-platforms/proxmox/&quot; target=_blank&gt;construct/download images for control plane and worker nodes&lt;/a&gt;
  &lt;li&gt;&lt;a href=&quot;https://pve.proxmox.com/wiki/Qemu-guest-agent&quot; target=_blank&gt;discusses qemu guest agent&lt;/a&gt;
  &lt;li&gt;&lt;a href=&quot;https://homelab.casaursus.net/talos-os/&quot; target=_blank&gt;recommended resources&lt;/a&gt;
  &lt;/ul&gt; 
    </content:encoded>

    <pubDate>Sun, 12 Jan 2025 17:35:54 +0000</pubDate>
    <guid isPermaLink="false">https://blog.raymond.burkholder.net/index.php?/archives/1276-guid.html</guid>
    
</item>
<item>
    <title>Kubernetes Links</title>
    <link>https://blog.raymond.burkholder.net/index.php?/archives/1209-Kubernetes-Links.html</link>
            <category>Containers</category>
    
    <comments>https://blog.raymond.burkholder.net/index.php?/archives/1209-Kubernetes-Links.html#comments</comments>
    <wfw:comment>https://blog.raymond.burkholder.net/wfwcomment.php?cid=1209</wfw:comment>

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

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://newrelic.com/blog/best-practices/monitoring-kubernetes-part-one&quot; target=_blank&gt;What is Kubernetes and how should you monitor it? &lt;/a&gt; - A monitoring strategy that takes advantage of Kubernetes will give you a bird&#039;s eye view of your entire application’s performance, even if containers running your applications are continuously moving between hosts or being scaled up and down. 
  &lt;li&gt;&lt;a href=&quot;https://newrelic.com/blog/how-to-relic/monitoring-kubernetes-part-two&quot; target=_blank&gt;How to optimize Kubernetes resource configurations for cost and performance &lt;/a&gt; - in part two of this Kubernetes guide, you&#039;ll get help balancing appropriate parameter configuration for any cluster you are working with now or in the future. You&#039;ll learn about requests and limits, measuring CPU utilization, and how to optimize Kubernetes resource allocation.
  &lt;li&gt;&lt;a href=&quot;https://www.reddit.com/r/kubernetes/comments/yszk82/best_way_to_install_and_use_kubernetes_for/&quot; target=_blank&gt;Best way to install and use kubernetes for learning&lt;/a&gt; - reddit
  &lt;li&gt;&lt;a href=&quot;https://github.com/kelseyhightower/kubernetes-the-hard-way&quot; target=_blank&gt;Kubernetes The Hard Way&lt;/a&gt; - This tutorial walks you through setting up Kubernetes the hard way. This guide is not for people looking for a fully automated command to bring up a Kubernetes cluster. Kubernetes The Hard Way is optimized for learning, which means taking the long route to ensure you understand each task required to bootstrap a Kubernetes cluster.
  &lt;li&gt;&lt;a href=&quot;https://austinsnerdythings.com/2022/04/25/deploying-a-kubernetes-cluster-within-proxmox-using-ansible/&quot; target=_blank&gt;Deploying a Kubernetes Cluster within Proxmox using Ansible&lt;/a&gt;
  &lt;/ul&gt; 
    </content:encoded>

    <pubDate>Sat, 12 Nov 2022 22:43:54 +0000</pubDate>
    <guid isPermaLink="false">https://blog.raymond.burkholder.net/index.php?/archives/1209-guid.html</guid>
    
</item>
<item>
    <title>A Different Container Way</title>
    <link>https://blog.raymond.burkholder.net/index.php?/archives/1198-A-Different-Container-Way.html</link>
            <category>Containers</category>
    
    <comments>https://blog.raymond.burkholder.net/index.php?/archives/1198-A-Different-Container-Way.html#comments</comments>
    <wfw:comment>https://blog.raymond.burkholder.net/wfwcomment.php?cid=1198</wfw:comment>

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

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;Admin magazine has an article called &lt;a href=&quot;https://www.admin-magazine.com/Archive/2022/67/Create-secure-simple-containers-with-the-systemd-tools-Nspawnd-and-Portabled&quot; target=_blank&gt; Create secure simple containers with the systemd tools Nspawnd and Portabled&lt;/a&gt;, which offers a mechanism different from my favorite LXC mechanisms.  I&#039;ll have to give it a try for simpler projects.

&lt;p&gt;They seem to be subsets of the templates and caching already available via LXC, but the one stand out is an added tool called &lt;a href=&quot;http://0pointer.net/blog/mkosi-a-tool-for-generating-os-images.html&quot; target=_blank&gt;mkosi&lt;/a&gt;, which stands for Make Operating System Image, and is a tool for precisely that: generating an OS tree or image that can be booted.  It seems to be useful for creating container images as well as images which can be used in heavier virtualization environments such as KVM. 
    </content:encoded>

    <pubDate>Wed, 25 May 2022 16:23:52 +0000</pubDate>
    <guid isPermaLink="false">https://blog.raymond.burkholder.net/index.php?/archives/1198-guid.html</guid>
    
</item>
<item>
    <title>IQFeed on Linux throws ICMP Error</title>
    <link>https://blog.raymond.burkholder.net/index.php?/archives/1067-IQFeed-on-Linux-throws-ICMP-Error.html</link>
            <category>Containers</category>
    
    <comments>https://blog.raymond.burkholder.net/index.php?/archives/1067-IQFeed-on-Linux-throws-ICMP-Error.html#comments</comments>
    <wfw:comment>https://blog.raymond.burkholder.net/wfwcomment.php?cid=1067</wfw:comment>

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

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;Seen on the IQFeed Developer Support 2020/04/21.  A solution for allowing ICMP packets.

&lt;blockquote&gt;
&lt;p&gt;iqconnect.exe does a ping round trip against its DTN servers (you can see the ping results at IQConnect.log when you stop the feed and iqconnect.exe exits). Thing is, ping uses ICMP protocol, which in linux is somewhat privileged.

&lt;p&gt;So, you need to give wine the appropiate permissions in order to be able to use ICMP. Running wine as root in order to circumvent this problem would be overkill (besides a very bad thing to do!), but fortunately you can use setcap in order to grant permissions in a much more granular way.

&lt;p&gt;First, locate where your wine-preloader file is. In my case, it&#039;s on /usr/bin/wine-preloader . Then, type (yoo will need to sudo for this):

&lt;pre&gt;
sudo setcap cap_net_raw+epi /usr/bin/wine-preloader
&lt;/pre&gt;

&lt;p&gt;and that&#039;s all. Now wine is allowed to use ICMP protocol, which in turn will allow IQconnect.eze to make its &quot;ping things&quot; without complaining
&lt;/blockquote&gt; 
    </content:encoded>

    <pubDate>Tue, 26 May 2020 20:15:57 +0000</pubDate>
    <guid isPermaLink="false">https://blog.raymond.burkholder.net/index.php?/archives/1067-guid.html</guid>
    
</item>
<item>
    <title>GUI From an LXC Container on the Host</title>
    <link>https://blog.raymond.burkholder.net/index.php?/archives/1065-GUI-From-an-LXC-Container-on-the-Host.html</link>
            <category>Containers</category>
    
    <comments>https://blog.raymond.burkholder.net/index.php?/archives/1065-GUI-From-an-LXC-Container-on-the-Host.html#comments</comments>
    <wfw:comment>https://blog.raymond.burkholder.net/wfwcomment.php?cid=1065</wfw:comment>

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

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;I am almost embarrassed to say that I missed a good night&#039;s sleep sifting through erroneous out of date misinformation, missing some subtle distinctions, and winnowing out the chafe.

&lt;p&gt;This all started when I wanted to give &lt;a href=&quot;https://krita.org/en/&quot; target=_blank&gt;Krita&lt;/a&gt; a try for editing photographs.  It is said it is the next best thing in open source when compared to PhotoShop.  When installed on my Debian Linux workstation, all I could get out of it was crashes of one form or another.  I&#039;m not really surprised as my workstation has been through various combinations of buster, testing, bullseye, sid and experimental.  Some package is out of sync somewhere.

&lt;p&gt;So.. since I know how to run LXC containers, I figured I&#039;d give that a try.  That was successful, to a point.  I used &lt;a href=&quot;https://wiki.x2go.org/doku.php&quot; target=_blank&gt;X2Go&lt;/a&gt; for remote console.  But when my images are Nikon NEF files at 24Megapixels at 14bits each, file size, computation, and visualization are a bit of challenge (the screen updates being the main challenge).  A wide erasure brush was slow, even on my speedy machine.

&lt;p&gt;There are sites which vehemently say that there is no direct way to see the GUI from a container on a workstation host.  Sigh.  Misinformation.  Then there are the five year old sites which show how it is done, but have extra commands, missing commands, or missing options.  More sigh.

&lt;p&gt;After much trial and error and trying the same things over again, with minor variations on the theme, in the hopes something might fix itself, it was a long night.

&lt;p&gt;For the record, here is my research on a Debian Bullseye system with LXC &#039;1:3.1.0+really3.0.4-3&#039;

 &lt;br /&gt;&lt;a href=&quot;https://blog.raymond.burkholder.net/index.php?/archives/1065-GUI-From-an-LXC-Container-on-the-Host.html#extended&quot;&gt;Continue reading &quot;GUI From an LXC Container on the Host&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sat, 23 May 2020 21:41:27 +0000</pubDate>
    <guid isPermaLink="false">https://blog.raymond.burkholder.net/index.php?/archives/1065-guid.html</guid>
    
</item>
<item>
    <title>Limiting Memory in LXC Containers</title>
    <link>https://blog.raymond.burkholder.net/index.php?/archives/1028-Limiting-Memory-in-LXC-Containers.html</link>
            <category>Containers</category>
    
    <comments>https://blog.raymond.burkholder.net/index.php?/archives/1028-Limiting-Memory-in-LXC-Containers.html#comments</comments>
    <wfw:comment>https://blog.raymond.burkholder.net/wfwcomment.php?cid=1028</wfw:comment>

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

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;To  limit the amount of memory supplied to each container, place something similar to the following in the container configuration file:

&lt;blockquote&gt;&lt;pre&gt;
lxc.cgroup.memory.limit_in_bytes = 5120M
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;The lxcfs daemon/service/package should be installed, and should be seen to be mounted on /var/lib/lxcfs

&lt;p&gt;Prior to setting the memory limit, unfettered memory useage can be determined with 

&lt;blockquote&gt;&lt;pre&gt;
cat /sys/fs/cgroup/memory/lxc/&lt;name of running container&gt;/memory.max_usage_in_bytes
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;When inside the container, something like &#039;free -m&#039; should show the memory available to the container.

&lt;blockquote&gt;&lt;pre&gt;
# free -m
              total        used        free      shared  buff/cache   available
Mem:          16029        5121        5890         444        5017       10046
Swap:          9535           0        9535
&lt;/pre&gt;&lt;/blockquote&gt; 
    </content:encoded>

    <pubDate>Tue, 01 Oct 2019 20:01:49 +0000</pubDate>
    <guid isPermaLink="false">https://blog.raymond.burkholder.net/index.php?/archives/1028-guid.html</guid>
    
</item>
<item>
    <title>Gui using Wine, X2Go, LXDE in a simple LXC container</title>
    <link>https://blog.raymond.burkholder.net/index.php?/archives/950-Gui-using-Wine,-X2Go,-LXDE-in-a-simple-LXC-container.html</link>
            <category>Containers</category>
    
    <comments>https://blog.raymond.burkholder.net/index.php?/archives/950-Gui-using-Wine,-X2Go,-LXDE-in-a-simple-LXC-container.html#comments</comments>
    <wfw:comment>https://blog.raymond.burkholder.net/wfwcomment.php?cid=950</wfw:comment>

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

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;Skip this whole bit and go to the bottom for the current easier install.

&lt;p&gt;Here are some instructions I use to build a light weight gui in an LXC container.   The window easily scales, and with Wine, Windows applications can be run without the Windows overhead.

&lt;p&gt;Using &lt;a href=&quot;https://wiki.x2go.org/doku.php/wiki:repositories:debian&quot; target=_blank&gt;X2Go Packages for Debian GNU/Linux&lt;/a&gt; as a reference, I created /etc/apt/sources.list.d/x2go.list with the following content:

&lt;blockquote&gt;&lt;pre&gt;
# X2Go Repository (release builds)
deb http://packages.x2go.org/debian stretch extras main
# X2Go Repository (sources of release builds)
deb-src http://packages.x2go.org/debian stretch extras main
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;I have the following primary sources in /etc/apt/sources.list:

&lt;blockquote&gt;&lt;pre&gt;
deb [arch=amd64] http://ftp.us.debian.org/debian          stable        main contrib
deb [arch=amd64] http://security.debian.org/debian-security stable/updates main contrib
deb [arch=i386] http://ftp.us.debian.org/debian          stable        main contrib
deb [arch=i386] http://security.debian.org/debian-security stable/updates main contrib
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;Then the following commands will add wine64, wine32, lxde, and x2go server:

&lt;blockquote&gt;&lt;pre&gt;
vim.tiny /etc/apt/sources.list
apt update
dpkg --add-architecture i386 &amp;&amp;amp; apt-get update &amp;&amp;amp; apt-get install wine32 wine winetricks
apt update
apt --no-install-recommends install gnupg2 dirmngr
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com E1F958385BFE2B6E
vim.tiny  /etc/apt/sources.list.d/x2go.list
apt update
apt-get install x2go-keyring &amp;&amp;amp; apt-get update
apt install \
  --no-install-recommends \
    xserver-xorg-core \
    xserver-xorg-input-all \
    xserver-xorg-video-fbdev  \
    xserver-xorg-video-vesa \
    lxde \
    x2goserver-xsession \
    x2golxdebindings
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;VNC client is not used.  An X2Go client is used instead.  It seems to be fast and efficient.  And works through ssh.  It can even do a proxied hop through one ssh connection to a second ssh destination.

&lt;p&gt;&lt;b&gt;Current Easier Install&lt;/b&gt;, everything has been packaged now:

&lt;blockquote&gt;&lt;pre&gt;
apt install \
  --no-install-recommends \
    xserver-xorg-core \
    xserver-xorg-input-all \
    xserver-xorg-video-fbdev  \
    xserver-xorg-video-vesa \
    lxde \
    x2goserver \
    x2goserver-xsession 
&lt;/pre&gt;&lt;/blockquote&gt; 
    </content:encoded>

    <pubDate>Mon, 02 Jul 2018 03:30:50 +0000</pubDate>
    <guid isPermaLink="false">https://blog.raymond.burkholder.net/index.php?/archives/950-guid.html</guid>
    
</item>
<item>
    <title>Philosophy of Containers</title>
    <link>https://blog.raymond.burkholder.net/index.php?/archives/901-Philosophy-of-Containers.html</link>
            <category>Containers</category>
    
    <comments>https://blog.raymond.burkholder.net/index.php?/archives/901-Philosophy-of-Containers.html#comments</comments>
    <wfw:comment>https://blog.raymond.burkholder.net/wfwcomment.php?cid=901</wfw:comment>

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

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;Lifted from &lt;a href=&quot;https://lwn.net/Articles/747020/&quot; target=_blank&gt;LWN [Posted February 10, 2018 by jake]&lt;/a&gt; -- In ACMQueue magazine, Bridget Kromhout writes about containers and why they are not the solution to every problem. The article is subtitled: &quot;Complex socio-technical systems are hard; film at 11.&quot; 

&lt;blockquote&gt;Don&#039;t get me wrong—containers are delightful! But let&#039;s be real: we&#039;re unlikely to solve the vast majority of problems in a given organization via the judicious application of kernel features. If you have contention between your ops team and your dev team(s)—and maybe they&#039;re all facing off with some ill-considered DevOps silo inexplicably stuck between them—then cgroups and namespaces won&#039;t have a prayer of solving that. Development teams love the idea of shipping their dependencies bundled with their apps, imagining limitless portability. Someone in security is weeping for the unpatched CVEs, but feature velocity is so desirable that security&#039;s pleas go unheard. Platform operators are happy (well, less surly) knowing they can upgrade the underlying infrastructure without affecting the dependencies for any applications, until they realize the heavyweight app containers shipping a full operating system aren&#039;t being maintained at all.
&lt;/blockquote&gt;

&lt;p&gt;The original article is found at &lt;a href=&quot;https://queue.acm.org/detail.cfm?id=3185224&quot; target=_blank&gt;Containers Will Not Fix Your Broken Culture (and Other Hard Truths)&lt;/a&gt; -- Complex socio-technical systems are hard;
film at 11.

&lt;p&gt;My current role revolves around automating the build of solutions:  operating systems, the networking, the virtualization, the storage and the apps running on top.  And not just home grown software modules.  So the above quote struck a chord.  And is reinforced by another paragraph in the article:

&lt;blockquote&gt;
Being able to reproduce a build allows for separation of concerns. We want this to be effective and yet not introduce unnecessary barriers. The proverbial wall of confusion is all too real, built on the tension between having incentive to ship changes and being rewarded for stability. Building just the right abstractions that empower independent teams is worth taking the time to iterate on (and, no, nobody gets it right immediately, because &quot;right&quot; will evolve over time).
&lt;/blockquote&gt;

&lt;p&gt;While on the subject of containers, there was another recent LWN reference: &lt;a href=&quot;https://lwn.net/Articles/745820/&quot; target=_blank&gt;Containers from user space&lt;/a&gt; in which Jonathan Corbet writes about Jessie Frazelle&#039;s talk at linux.conf.au 2018.  The article reminds me that Seccomp, Apparmour and SELinux are important tools for enhancing the &#039;compartmentalization&#039; of containers.

&lt;p&gt;Containers, when used by developers for publishing their apps and dependencies, could be defined as a form of packaging.  This definition segues into an article linked from 
&lt;a href=&quot;https://planet.debian.org/&quot; target=_blank&gt;Planet Debian&lt;/a&gt; which is called 
&lt;a href=&quot;http://joeyh.name/blog/entry/futures_of_distributions/&quot; target=_blank&gt;futures of distributions&lt;/a&gt; where the author makes reference to the issue:

&lt;blockquote&gt;The granularity at which software is built has fundamentally changed. It&#039;s now typical for hundreds of small libraries to be used by any application, often pegged to specific versions. Language-specific tools manage all the resulting complexity automatically, but distributions can&#039;t muster the manpower to package a fraction of this stuff.&lt;/a&gt;

&lt;p&gt;2018/02/19 - even after saying all that, pre-built containers are here to stay: &lt;a href=&quot;https://www.openfaas.com/&quot; target=_blank&gt;OpenFaaS&lt;/a&gt; -- you can package anything as a serverless function - from Node.js to Golang to CSharp, even binaries like ffmpeg or ImageMagick.  I read somewhere that serverless is just something you can&#039;t ssh into.  So there is a wall be built between those who build the underlying infrastructure and those who put the window dressing on.  And is confirmed by OpenFaaS moto:

&lt;blockquote&gt;Our core values are: developer first, operational simplicity and community centric&lt;/blockquote&gt;

&lt;p&gt;Not saying serverless is good, bad, or ugly, but someone has a &lt;a href=&quot;https://github.com/pmuens/awesome-serverless&quot; target=_blank&gt;Curated list of resources related to serverless architectures and the Serverless Framework&lt;/a&gt;. 
    </content:encoded>

    <pubDate>Sun, 18 Feb 2018 16:45:30 +0000</pubDate>
    <guid isPermaLink="false">https://blog.raymond.burkholder.net/index.php?/archives/901-guid.html</guid>
    
</item>
<item>
    <title>LXC Container Research Items</title>
    <link>https://blog.raymond.burkholder.net/index.php?/archives/840-LXC-Container-Research-Items.html</link>
            <category>Containers</category>
    
    <comments>https://blog.raymond.burkholder.net/index.php?/archives/840-LXC-Container-Research-Items.html#comments</comments>
    <wfw:comment>https://blog.raymond.burkholder.net/wfwcomment.php?cid=840</wfw:comment>

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

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://fabiokung.com/2014/03/13/memory-inside-linux-containers/&quot; target=_blank&gt;Memory inside Linux containers&lt;/a&gt;: unanswered questions about how to check memory utilization within a container rather than the machine
  &lt;li&gt;&lt;a href=&quot;https://stgraber.org/2014/02/09/lxc-1-0-gui-in-containers/&quot; target=_blank&gt;LXC 1.0: GUI in Containers&lt;/a&gt; by Stephane Graber, notes about non root containers, and running skype in a container.
  &lt;/ul&gt; 
    </content:encoded>

    <pubDate>Sun, 29 Oct 2017 12:06:47 +0000</pubDate>
    <guid isPermaLink="false">https://blog.raymond.burkholder.net/index.php?/archives/840-guid.html</guid>
    
</item>
<item>
    <title>cirros: a tiny container base</title>
    <link>https://blog.raymond.burkholder.net/index.php?/archives/821-cirros-a-tiny-container-base.html</link>
            <category>Containers</category>
    
    <comments>https://blog.raymond.burkholder.net/index.php?/archives/821-cirros-a-tiny-container-base.html#comments</comments>
    <wfw:comment>https://blog.raymond.burkholder.net/wfwcomment.php?cid=821</wfw:comment>

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

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;I havn&#039;t tried it out yet, but from somewhere, I found &lt;a href=&quot;https://launchpad.net/cirros&quot; target=_blank&gt;cirros&lt;/a&gt;: CirrOS is a Tiny OS that specializes in running on a cloud.

&lt;p&gt;Some &lt;a href=&quot;https://git.launchpad.net/cirros/tree/doc&quot; target=_blank&gt;documentation&lt;/a&gt; show how to get it into an lxc container.

&lt;p&gt;Should run as a really tiny kvm?

&lt;p&gt;I found in a Debian install that CirrOS is an LXC template (with the install of the LXC package):

&lt;blockquote&gt;&lt;pre&gt;
# ls -alt /usr/share/lxc/templates/lxc-cirros 
-rwxr-xr-x 1 root root 10374 Aug 25 18:20 /usr/share/lxc/templates/lxc-cirros
&lt;/pre&gt;&lt;/blockquote&gt; 
    </content:encoded>

    <pubDate>Mon, 09 Oct 2017 02:21:44 +0000</pubDate>
    <guid isPermaLink="false">https://blog.raymond.burkholder.net/index.php?/archives/821-guid.html</guid>
    
</item>
<item>
    <title>Container Analysis</title>
    <link>https://blog.raymond.burkholder.net/index.php?/archives/689-Container-Analysis.html</link>
            <category>Containers</category>
    
    <comments>https://blog.raymond.burkholder.net/index.php?/archives/689-Container-Analysis.html#comments</comments>
    <wfw:comment>https://blog.raymond.burkholder.net/wfwcomment.php?cid=689</wfw:comment>

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

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;An interesting repository encountered today:

&lt;p&gt;&lt;a href=&quot;https://github.com/mhausenblas/cinf&quot; target=_blank&gt;cinf&lt;/a&gt;: A command line tool to view namespaces and cgroups, useful for low-level container prodding. 
    </content:encoded>

    <pubDate>Sun, 23 Oct 2016 20:03:50 +0000</pubDate>
    <guid isPermaLink="false">https://blog.raymond.burkholder.net/index.php?/archives/689-guid.html</guid>
    
</item>

</channel>
</rss>
