<?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 - Docker</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>Mon, 06 Apr 2026 00:40:58 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 - Docker - In And Around Technology and The Arts</title>
        <link>https://blog.raymond.burkholder.net/</link>
        <width>100</width>
        <height>21</height>
    </image>

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

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

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;Images vs Containers
&lt;ul&gt;
  &lt;li&gt;Docker Image: blueprint with app code and dependencies - static, read-only
  &lt;li&gt;Docker Container: running instance of an image - dynamic, executable
  &lt;/ul&gt;

&lt;p&gt;Each instruction in the Dockerfile adds an extra layer to the Docker image. Minimize the number of layers by consolidating the instructions to increase the build’s performance and time.

&lt;p&gt;Avoid using multiple RUN commands as it creates multiple cacheable layers which will affect the efficiency of the build process.

&lt;p&gt;Use a single process per container: Each container should run a single process. This makes it easier to manage and monitor containers and helps to keep containers lightweight.

&lt;p&gt;Images can exist without containers, whereas a container needs an image to run. We can create multiple containers from the same image, each with its own unique data and state

&lt;p&gt;Docker commands
&lt;ul&gt;
  &lt;li&gt;&lt;b&gt;Docker Run&lt;/b&gt;: It used for launching the containers from images, with specifying the runtime options and commands. 
  &lt;li&gt;&lt;b&gt;Docker Pull&lt;/b&gt;: It fetches the container images from the container registry like Docker Hub to the local machine. 
  &lt;li&gt;&lt;b&gt;Docker ps&lt;/b&gt;: It helps in displaying the running containers along with their important information like container ID, image used and status. 
  &lt;li&gt;&lt;b&gt;Docker Stop&lt;/b&gt;: It helps in halting the running containers gracefully shutting down the processes within them. 
  &lt;li&gt;&lt;b&gt;Docker Start&lt;/b&gt;: It helps in restarting the stopped containers, resuming their operations from the previous state. 
  &lt;li&gt;&lt;b&gt;Docker Login&lt;/b&gt;: It helps to login in to the docker registry enabling the access to private repositories. 
  &lt;/ul&gt;

&lt;p&gt;Docker network commands:
&lt;ul&gt;
  &lt;li&gt;docker network ls
  &lt;li&gt;docker network inspect &lt;id&gt;
  &lt;/ul&gt;

&lt;p&gt;Documentation
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.docker.com/reference/dockerfile&quot; target=_blank&gt;Dockerfile reference&lt;/a&gt; - &lt;a href=&quot;https://www.geeksforgeeks.org/devops/what-is-dockerfile-syntax/&quot; target=_blank&gt;examples&lt;/a&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.docker.com/build/concepts/dockerfile/&quot; target=_blank&gt;Dockerfile overview&lt;/a&gt; - with example
  &lt;li&gt;&lt;a href=&quot;https://docs.docker.com/engine/cli/completion/&quot; target=_blank&gt;Command Line Completion&lt;/a&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.docker.com/build/building/base-images/&quot; target=_blank&gt;Base images&lt;/a&gt; - includes building from scratch
  &lt;li&gt;&lt;a href=&quot;https://docs.docker.com/get-started/docker_cheatsheet.pdf&quot; target=_blank&gt;CLI Cheat Sheet&lt;/a&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.geeksforgeeks.org/devops/docker-tutorial/&quot; target=_blank&gt;tutorial&lt;/a&gt;
  &lt;/ul&gt;
 
    </content:encoded>

    <pubDate>Sun, 05 Apr 2026 00:26:37 +0000</pubDate>
    <guid isPermaLink="false">https://blog.raymond.burkholder.net/index.php?/archives/1347-guid.html</guid>
    
</item>
<item>
    <title>Docker Installation In LXC on ProxMox</title>
    <link>https://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>https://blog.raymond.burkholder.net/index.php?/archives/1346-Docker-Installation-In-LXC-on-ProxMox.html#comments</comments>
    <wfw:comment>https://blog.raymond.burkholder.net/wfwcomment.php?cid=1346</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://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">https://blog.raymond.burkholder.net/index.php?/archives/1346-guid.html</guid>
    
</item>

</channel>
</rss>
