<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.bwhpc.de/wiki/index.php?action=history&amp;feed=atom&amp;title=BwUniCluster3.0%2FContainers</id>
	<title>BwUniCluster3.0/Containers - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.bwhpc.de/wiki/index.php?action=history&amp;feed=atom&amp;title=BwUniCluster3.0%2FContainers"/>
	<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=BwUniCluster3.0/Containers&amp;action=history"/>
	<updated>2026-04-21T08:46:42Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=BwUniCluster3.0/Containers&amp;diff=15295&amp;oldid=prev</id>
		<title>P Schuhmacher: /* FAQ */</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=BwUniCluster3.0/Containers&amp;diff=15295&amp;oldid=prev"/>
		<updated>2025-09-17T12:39:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;FAQ&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:39, 17 September 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 96:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 96:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &#039;&#039;How can I run JupyterLab in a container and connect to it?&#039;&#039;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &#039;&#039;How can I run JupyterLab in a container and connect to it?&#039;&#039;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** Start an interactive session with or without GPUs. Notice the compute node ID the session is running on, and start a container with a running JupyterLab, e.g.:&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;salloc -p gpu_4 --time=01:00:00 --gres=gpu:1&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;enroot start -m &amp;lt;localDir&amp;gt;:/work --rw nvidia+pytorch+21.04-py3 jupyter lab&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** Start an interactive session with or without GPUs. Notice the compute node ID the session is running on, and start a container with a running JupyterLab, e.g.:&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;salloc -p gpu_4 --time=01:00:00 --gres=gpu:1&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;enroot start -m &amp;lt;localDir&amp;gt;:/work --rw nvidia+pytorch+21.04-py3 jupyter lab&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** Open a terminal on your desktop and create a SSH-tunnel to the running JupyterLab instance on the compute node. Insert the node ID, where the interactive session is running on:&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;ssh -L8888:&amp;lt;computeNodeID&amp;gt;:8888 &amp;lt;yourAccount&amp;gt;@&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;uc2&lt;/del&gt;.scc.kit.edu&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** Open a terminal on your desktop and create a SSH-tunnel to the running JupyterLab instance on the compute node. Insert the node ID, where the interactive session is running on:&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;ssh -L8888:&amp;lt;computeNodeID&amp;gt;:8888 &amp;lt;yourAccount&amp;gt;@&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;uc3&lt;/ins&gt;.scc.kit.edu&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** Open a web browser and open the URL [http://localhost:8888 localhost:8888]&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** Open a web browser and open the URL [http://localhost:8888 localhost:8888]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** Enter the token, which is visible in the output of the first terminal.&amp;lt;br /&amp;gt;Copy the string behind the &amp;lt;code&amp;gt;token=&amp;lt;/code&amp;gt; and paste it into the input field in the browser.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** Enter the token, which is visible in the output of the first terminal.&amp;lt;br /&amp;gt;Copy the string behind the &amp;lt;code&amp;gt;token=&amp;lt;/code&amp;gt; and paste it into the input field in the browser.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>P Schuhmacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=BwUniCluster3.0/Containers&amp;diff=14712&amp;oldid=prev</id>
		<title>S Braun: /* FAQ */</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=BwUniCluster3.0/Containers&amp;diff=14712&amp;oldid=prev"/>
		<updated>2025-04-09T13:05:46Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;FAQ&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:05, 9 April 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 104:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 104:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &#039;&#039;Is there something like &amp;lt;code&amp;gt;enroot-compose&amp;lt;/code&amp;gt;?&#039;&#039;&amp;lt;br /&amp;gt;AFAIK no.&amp;lt;br /&amp;gt; Enroot is mainly intended for HPC workloads, not for operating multi-container applications. However, starting and running these applications separately is possible.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &#039;&#039;Is there something like &amp;lt;code&amp;gt;enroot-compose&amp;lt;/code&amp;gt;?&#039;&#039;&amp;lt;br /&amp;gt;AFAIK no.&amp;lt;br /&amp;gt; Enroot is mainly intended for HPC workloads, not for operating multi-container applications. However, starting and running these applications separately is possible.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &#039;&#039;Can I use workspaces to store containers?&#039;&#039;&amp;lt;br /&amp;gt;Yes.&amp;lt;br /&amp;gt;You can define the location of configuration files and storage with environment variables. The &amp;lt;code&amp;gt;ENROOT_DATA_PATH&amp;lt;/code&amp;gt; variable should be set accordingly. Please refer to [https://github.com/NVIDIA/enroot/blob/master/doc/configuration.md#runtime-configuration NVIDIA&#039;s documentation] on runtime configuration. Unfortunately, using Pyxis and images stored on workspaces requires an ugly hack, because setting &amp;lt;code&amp;gt;ENROOT_DATA_PATH&amp;lt;/code&amp;gt; is ignored by Pyxis. The workaround consists in setting &amp;lt;code&amp;gt;XDG_DATA_HOME&amp;lt;/code&amp;gt; to the workspace directory (cf. https://github.com/NVIDIA/pyxis/issues/46).&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &#039;&#039;Can I use workspaces to store containers?&#039;&#039;&amp;lt;br /&amp;gt;Yes.&amp;lt;br /&amp;gt;You can define the location of configuration files and storage with environment variables. The &amp;lt;code&amp;gt;ENROOT_DATA_PATH&amp;lt;/code&amp;gt; variable should be set accordingly. Please refer to [https://github.com/NVIDIA/enroot/blob/master/doc/configuration.md#runtime-configuration NVIDIA&#039;s documentation] on runtime configuration. Unfortunately, using Pyxis and images stored on workspaces requires an ugly hack, because setting &amp;lt;code&amp;gt;ENROOT_DATA_PATH&amp;lt;/code&amp;gt; is ignored by Pyxis. The workaround consists in setting &amp;lt;code&amp;gt;XDG_DATA_HOME&amp;lt;/code&amp;gt; to the workspace directory (cf. https://github.com/NVIDIA/pyxis/issues/46).&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;For a workspace named &#039;&#039;enroottest&#039;&#039; this would be: &amp;lt;code&amp;gt;export XDG_DATA_HOME=$(ws_find enroottest)&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;export ENROOT_DATA_PATH=$(ws_find enroottest)/enroot&amp;lt;/code&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Additional resources ==&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Additional resources ==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>S Braun</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=BwUniCluster3.0/Containers&amp;diff=14711&amp;oldid=prev</id>
		<title>S Braun: /* FAQ */</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=BwUniCluster3.0/Containers&amp;diff=14711&amp;oldid=prev"/>
		<updated>2025-04-09T13:01:39Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;FAQ&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:01, 9 April 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 104:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 104:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &#039;&#039;Is there something like &amp;lt;code&amp;gt;enroot-compose&amp;lt;/code&amp;gt;?&#039;&#039;&amp;lt;br /&amp;gt;AFAIK no.&amp;lt;br /&amp;gt; Enroot is mainly intended for HPC workloads, not for operating multi-container applications. However, starting and running these applications separately is possible.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &#039;&#039;Is there something like &amp;lt;code&amp;gt;enroot-compose&amp;lt;/code&amp;gt;?&#039;&#039;&amp;lt;br /&amp;gt;AFAIK no.&amp;lt;br /&amp;gt; Enroot is mainly intended for HPC workloads, not for operating multi-container applications. However, starting and running these applications separately is possible.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &#039;&#039;Can I use workspaces to store containers?&#039;&#039;&amp;lt;br /&amp;gt;Yes.&amp;lt;br /&amp;gt;You can define the location of configuration files and storage with environment variables. The &amp;lt;code&amp;gt;ENROOT_DATA_PATH&amp;lt;/code&amp;gt; variable should be set accordingly. Please refer to [https://github.com/NVIDIA/enroot/blob/master/doc/configuration.md#runtime-configuration NVIDIA&#039;s documentation] on runtime configuration. Unfortunately, using Pyxis and images stored on workspaces requires an ugly hack, because setting &amp;lt;code&amp;gt;ENROOT_DATA_PATH&amp;lt;/code&amp;gt; is ignored by Pyxis. The workaround consists in setting &amp;lt;code&amp;gt;XDG_DATA_HOME&amp;lt;/code&amp;gt; to the workspace directory (cf. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;https://github.com/NVIDIA/pyxis/issues/46&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;).&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &#039;&#039;Can I use workspaces to store containers?&#039;&#039;&amp;lt;br /&amp;gt;Yes.&amp;lt;br /&amp;gt;You can define the location of configuration files and storage with environment variables. The &amp;lt;code&amp;gt;ENROOT_DATA_PATH&amp;lt;/code&amp;gt; variable should be set accordingly. Please refer to [https://github.com/NVIDIA/enroot/blob/master/doc/configuration.md#runtime-configuration NVIDIA&#039;s documentation] on runtime configuration. Unfortunately, using Pyxis and images stored on workspaces requires an ugly hack, because setting &amp;lt;code&amp;gt;ENROOT_DATA_PATH&amp;lt;/code&amp;gt; is ignored by Pyxis. The workaround consists in setting &amp;lt;code&amp;gt;XDG_DATA_HOME&amp;lt;/code&amp;gt; to the workspace directory (cf. https://github.com/NVIDIA/pyxis/issues/46).&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Additional resources ==&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Additional resources ==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>S Braun</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=BwUniCluster3.0/Containers&amp;diff=14710&amp;oldid=prev</id>
		<title>S Braun: /* FAQ */</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=BwUniCluster3.0/Containers&amp;diff=14710&amp;oldid=prev"/>
		<updated>2025-04-09T13:00:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;FAQ&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:00, 9 April 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 104:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 104:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &#039;&#039;Is there something like &amp;lt;code&amp;gt;enroot-compose&amp;lt;/code&amp;gt;?&#039;&#039;&amp;lt;br /&amp;gt;AFAIK no.&amp;lt;br /&amp;gt; Enroot is mainly intended for HPC workloads, not for operating multi-container applications. However, starting and running these applications separately is possible.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &#039;&#039;Is there something like &amp;lt;code&amp;gt;enroot-compose&amp;lt;/code&amp;gt;?&#039;&#039;&amp;lt;br /&amp;gt;AFAIK no.&amp;lt;br /&amp;gt; Enroot is mainly intended for HPC workloads, not for operating multi-container applications. However, starting and running these applications separately is possible.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &#039;&#039;Can I use workspaces to store containers?&#039;&#039;&amp;lt;br /&amp;gt;Yes.&amp;lt;br /&amp;gt;You can define the location of configuration files and storage with environment variables. The &amp;lt;code&amp;gt;ENROOT_DATA_PATH&amp;lt;/code&amp;gt; variable should be set accordingly. Please refer to [https://github.com/NVIDIA/enroot/blob/master/doc/configuration.md#runtime-configuration NVIDIA&#039;s documentation] on runtime configuration.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &#039;&#039;Can I use workspaces to store containers?&#039;&#039;&amp;lt;br /&amp;gt;Yes.&amp;lt;br /&amp;gt;You can define the location of configuration files and storage with environment variables. The &amp;lt;code&amp;gt;ENROOT_DATA_PATH&amp;lt;/code&amp;gt; variable should be set accordingly. Please refer to [https://github.com/NVIDIA/enroot/blob/master/doc/configuration.md#runtime-configuration NVIDIA&#039;s documentation] on runtime configuration&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Unfortunately, using Pyxis and images stored on workspaces requires an ugly hack, because setting &amp;lt;code&amp;gt;ENROOT_DATA_PATH&amp;lt;/code&amp;gt; is ignored by Pyxis. The workaround consists in setting &amp;lt;code&amp;gt;XDG_DATA_HOME&amp;lt;/code&amp;gt; to the workspace directory (cf. [https://github.com/NVIDIA/pyxis/issues/46])&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Additional resources ==&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Additional resources ==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>S Braun</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=BwUniCluster3.0/Containers&amp;diff=14561&amp;oldid=prev</id>
		<title>P Schuhmacher: /* Start via Slurm */</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=BwUniCluster3.0/Containers&amp;diff=14561&amp;oldid=prev"/>
		<updated>2025-04-01T07:48:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Start via Slurm&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 09:48, 1 April 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 77:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 77:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Start via Slurm ===&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Start via Slurm ===&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Start existing Container:&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Start existing Container:&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&amp;lt;code&amp;gt;salloc -p dev_single -t 00:10:00 --container-name=ubuntu --container-mounts=/etc/slurm/task_prolog:/etc/slurm/task_prolog,/scratch:/scratch&amp;lt;/code&amp;gt; &lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&amp;lt;code&amp;gt;salloc -p dev_single -t 00:10:00 --container-name=ubuntu --container-mounts=/etc/slurm/task_prolog:/etc/slurm/task_prolog,/scratch:/scratch&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;,/usr/lib64/slurm:/usr/lib64/slurm,/usr/lib64/libhwloc.so:/usr/lib64/libhwloc.so,/usr/lib64/libhwloc.so.15:/usr/lib64/libhwloc.so.15&lt;/ins&gt;&amp;lt;/code&amp;gt; &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Download and start Container via pyxis directly:&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Download and start Container via pyxis directly:&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&amp;lt;code&amp;gt;salloc -p dev_single -t 00:10:00 --container-image=ubuntu --container-name=ubuntu --container-mounts=/etc/slurm/task_prolog:/etc/slurm/task_prolog,/scratch:/scratch&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*&amp;lt;code&amp;gt;salloc -p dev_single -t 00:10:00 --container-image=ubuntu --container-name=ubuntu --container-mounts=/etc/slurm/task_prolog:/etc/slurm/task_prolog,/scratch:/scratch&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;,/usr/lib64/slurm:/usr/lib64/slurm,/usr/lib64/libhwloc.so:/usr/lib64/libhwloc.so,/usr/lib64/libhwloc.so.15:/usr/lib64/libhwloc.so.15&lt;/ins&gt;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In this case an enroot Container is created under ~./local/share/enroot/&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In this case an enroot Container is created under ~./local/share/enroot/&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Note: &amp;lt;code&amp;gt;--container-mounts=/etc/slurm/task_prolog:/etc/slurm/task_prolog,/scratch:/scratch&amp;lt;/code&amp;gt; is needed for the plugin to work!! The Container name has to start with pyxis_ for the Plugin to work. When using the second Method this is done automatically. Furthermore when specifying the container name in your slurm Job the pyxis_ has to be omitted.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Note: &amp;lt;code&amp;gt;--container-mounts=/etc/slurm/task_prolog:/etc/slurm/task_prolog,/scratch:/scratch&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;,/usr/lib64/slurm:/usr/lib64/slurm,/usr/lib64/libhwloc.so:/usr/lib64/libhwloc.so,/usr/lib64/libhwloc.so.15:/usr/lib64/libhwloc.so.15&lt;/ins&gt;&amp;lt;/code&amp;gt; is needed for the plugin to work!! The Container name has to start with pyxis_ for the Plugin to work. When using the second Method this is done automatically. Furthermore when specifying the container name in your slurm Job the pyxis_ has to be omitted.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;All options usable for pyxis can be found via srun --help under &quot;Options provided by plugins:&quot;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;All options usable for pyxis can be found via srun --help under &quot;Options provided by plugins:&quot;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>P Schuhmacher</name></author>
	</entry>
	<entry>
		<id>https://wiki.bwhpc.de/wiki/index.php?title=BwUniCluster3.0/Containers&amp;diff=13603&amp;oldid=prev</id>
		<title>S Braun: Created page with &quot;= Introduction = To date, only few container runtime environments integrate well with HPC environments due to security concerns and differing assumptions in some areas.  For example native Docker environments require elevated privileges, which is not an option on shared HPC resources. Docker&#039;s &quot;rootless mode&quot; is also currently not supported on our HPC systems because it does not support necessary features such as cgroups resource controls, security profiles, overlay netw...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.bwhpc.de/wiki/index.php?title=BwUniCluster3.0/Containers&amp;diff=13603&amp;oldid=prev"/>
		<updated>2025-01-09T16:56:08Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;= Introduction = To date, only few container runtime environments integrate well with HPC environments due to security concerns and differing assumptions in some areas.  For example native Docker environments require elevated privileges, which is not an option on shared HPC resources. Docker&amp;#039;s &amp;quot;rootless mode&amp;quot; is also currently not supported on our HPC systems because it does not support necessary features such as cgroups resource controls, security profiles, overlay netw...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Introduction =&lt;br /&gt;
To date, only few container runtime environments integrate well with HPC environments due to security concerns and differing assumptions in some areas.&lt;br /&gt;
&lt;br /&gt;
For example native Docker environments require elevated privileges, which is not an option on shared HPC resources. Docker&amp;#039;s &amp;quot;rootless mode&amp;quot; is also currently not supported on our HPC systems because it does not support necessary features such as cgroups resource controls, security profiles, overlay networks, furthermore GPU passthrough is difficult. Necessary subuid (newuidmap) and subgid (newgidmap) settings may impose security issues.&lt;br /&gt;
&lt;br /&gt;
On bwUniCluster the container runtimes &amp;#039;&amp;#039;&amp;#039;Enroot&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;Singularity/Apptainer&amp;#039;&amp;#039;&amp;#039; are supported.&lt;br /&gt;
&lt;br /&gt;
Further rootless container runtime environments (Podman, …) might be supported in the future, depending on how support for e.g. network interconnects, security features and HPC file systems develops.&lt;br /&gt;
&lt;br /&gt;
= ENROOT =&lt;br /&gt;
&lt;br /&gt;
Enroot enables you to run &amp;#039;&amp;#039;&amp;#039;Docker containers&amp;#039;&amp;#039;&amp;#039; on HPC systems. It is developed by NVIDIA. It is the &amp;#039;&amp;#039;&amp;#039;recommended tool&amp;#039;&amp;#039;&amp;#039; to use containers on bwUniCluster and integrates well with GPU usage and has basically no impact on performance.&lt;br /&gt;
Enroot is available to all users by default.&lt;br /&gt;
[[File:docker_logo.svg|center|100px]]&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Excellent documentation is provided on [https://github.com/NVIDIA/enroot/blob/master/doc NVIDIA&amp;#039;s github page]. This documentation here therefore confines itself to simple examples to get to know the essential functionalities.&lt;br /&gt;
&lt;br /&gt;
Using Docker containers with Enroot requires three steps:&lt;br /&gt;
&lt;br /&gt;
* Importing an image&lt;br /&gt;
* Creating a container&lt;br /&gt;
* Starting a container&lt;br /&gt;
&lt;br /&gt;
Optionally containers can also be exported and transferred.&lt;br /&gt;
&lt;br /&gt;
=== Importing a container image ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;enroot import docker://alpine&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;This pulls the latest alpine image from dockerhub (default registry). You will obtain the file alpine.sqsh.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;enroot import docker://nvcr.io#nvidia/pytorch:21.04-py3&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;This pulls the pytorch image version 21.04-py3 from [https://ngc.nvidia.com/catalog NVIDIA&amp;#039;s NGC registry]. Please note that the NGC registry does not always contain the &amp;quot;latest&amp;quot; tag and instead requires the specification of a dedicated version. You will obtain the file nvidia+pytorch+21.04-py3.sqsh.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;enroot import docker://registry.scc.kit.edu#myProject/myImage:latest&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;This pulls your latest image from the KIT registry. You obtain the file myImage.sqsh.&lt;br /&gt;
&lt;br /&gt;
=== Creating a container ===&lt;br /&gt;
Create a container named &amp;quot;nvidia+pytorch+21.04-py3&amp;quot; by unpacking the .sqsh-file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;enroot create --name nvidia+pytorch+21.04-py3 nvidia+pytorch+21.04-py3.sqsh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Creating&amp;quot; a container means that the squashed container image is unpacked inside &amp;lt;code&amp;gt;$ENROOT_DATA_PATH/&amp;lt;/code&amp;gt;. By default this variable points to &amp;lt;code&amp;gt;$HOME/.local/share/enroot/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Starting a container ===&lt;br /&gt;
* Start the container nvidia+pytorch+21.04-py3 in read-write mode (&amp;lt;code&amp;gt;--rw&amp;lt;/code&amp;gt;) and run bash inside the container.&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;enroot start --rw nvidia+pytorch+21.04-py3 bash&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Start container in &amp;lt;code&amp;gt;--rw&amp;lt;/code&amp;gt;-mode and get root access (&amp;lt;code&amp;gt;--root&amp;lt;/code&amp;gt;) inside the container.&amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;enroot start --root --rw nvidia+pytorch+21.04-py3 bash&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;You can now install software with root privileges, depending on the containerized Linux distribution e.g. with&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;apt-get install … &amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;apk add …&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;yum install …&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;pacman -S …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Start container and mount (&amp;lt;code&amp;gt;-m&amp;lt;/code&amp;gt;) a local directory to &amp;lt;code&amp;gt;/work&amp;lt;/code&amp;gt; inside the container.&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;enroot start -m &amp;lt;localDir&amp;gt;:/work --rw nvidia+pytorch+21.04-py3 bash&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
* Start container, mount a directory and start the application &amp;lt;code&amp;gt;jupyter lab&amp;lt;/code&amp;gt;.&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;enroot start -m &amp;lt;localDir&amp;gt;:/work --rw nvidia+pytorch+21.04-py3 jupyter lab&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exporting and transfering containers ===&lt;br /&gt;
&lt;br /&gt;
If you intend to use Docker images which you built e.g. on your local desktop, and transfer them somewhere else, there are several possibilities to do so:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;enroot import --output myImage.sqsh dockerd://myImage&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;Import an image from the locally running Docker daemon. Copy the .sqsh-file to bwUniCluster and import it with &amp;lt;code&amp;gt;enroot import&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;enroot export --output myImage.sqsh myImage&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;Export an existing enroot container. Copy the .sqsh-file to bwUniCluster and import it with enroot import.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;enroot bundle --output myImage.run myImage.sqsh&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;Create a self extracting bundle from a container image. Copy the .run-file to bwUniCluster. You can run the self extracting image via ./myImage.run even if enroot is not installed!&lt;br /&gt;
&lt;br /&gt;
=== Container management ===&lt;br /&gt;
&lt;br /&gt;
You can list all containers on the system and additional information (&amp;lt;code&amp;gt;--fancy&amp;lt;/code&amp;gt; parameter) with the &amp;lt;code&amp;gt;enroot list&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
The unpacked images can be removed with the enroot remove command.&lt;br /&gt;
&lt;br /&gt;
== SLURM Integration==&lt;br /&gt;
Enroot allows you to run containerized applications non-interactively, including MPI- and multi-node parallelism. The necessary Slurm integration is realized via the [https://github.com/NVIDIA/pyxis Pyxis plugin].&lt;br /&gt;
&lt;br /&gt;
=== Create Container via enroot === &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;enroot import docker://ubuntu&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;enroot create -n pyxis_ubuntu ubuntu.sqsh&amp;lt;/code&amp;gt; &lt;br /&gt;
Adding pyxis_ is a must for the pyxis plugin to work&lt;br /&gt;
&lt;br /&gt;
=== Start via Slurm ===&lt;br /&gt;
Start existing Container:&lt;br /&gt;
*&amp;lt;code&amp;gt;salloc -p dev_single -t 00:10:00 --container-name=ubuntu --container-mounts=/etc/slurm/task_prolog:/etc/slurm/task_prolog,/scratch:/scratch&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Download and start Container via pyxis directly:&lt;br /&gt;
*&amp;lt;code&amp;gt;salloc -p dev_single -t 00:10:00 --container-image=ubuntu --container-name=ubuntu --container-mounts=/etc/slurm/task_prolog:/etc/slurm/task_prolog,/scratch:/scratch&amp;lt;/code&amp;gt;&lt;br /&gt;
In this case an enroot Container is created under ~./local/share/enroot/&lt;br /&gt;
&lt;br /&gt;
Note: &amp;lt;code&amp;gt;--container-mounts=/etc/slurm/task_prolog:/etc/slurm/task_prolog,/scratch:/scratch&amp;lt;/code&amp;gt; is needed for the plugin to work!! The Container name has to start with pyxis_ for the Plugin to work. When using the second Method this is done automatically. Furthermore when specifying the container name in your slurm Job the pyxis_ has to be omitted.&lt;br /&gt;
&lt;br /&gt;
All options usable for pyxis can be found via srun --help under &amp;quot;Options provided by plugins:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Notable Options:&lt;br /&gt;
* &amp;lt;code&amp;gt;--container-mount-home&amp;lt;/code&amp;gt; Mounts the home directory into the container&lt;br /&gt;
* &amp;lt;code&amp;gt;--container-writable&amp;lt;/code&amp;gt; Makes the container filesystem writable (otherwise only the mounted home is writebale)&lt;br /&gt;
* &amp;lt;code&amp;gt;--container-remap-root&amp;lt;/code&amp;gt; Become root in your container. Allows installation of software via e.G apt (ubuntu)&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;How can I run JupyterLab in a container and connect to it?&amp;#039;&amp;#039;&lt;br /&gt;
** Start an interactive session with or without GPUs. Notice the compute node ID the session is running on, and start a container with a running JupyterLab, e.g.:&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;salloc -p gpu_4 --time=01:00:00 --gres=gpu:1&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;enroot start -m &amp;lt;localDir&amp;gt;:/work --rw nvidia+pytorch+21.04-py3 jupyter lab&amp;lt;/code&amp;gt;&lt;br /&gt;
** Open a terminal on your desktop and create a SSH-tunnel to the running JupyterLab instance on the compute node. Insert the node ID, where the interactive session is running on:&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;ssh -L8888:&amp;lt;computeNodeID&amp;gt;:8888 &amp;lt;yourAccount&amp;gt;@uc2.scc.kit.edu&amp;lt;/code&amp;gt;&lt;br /&gt;
** Open a web browser and open the URL [http://localhost:8888 localhost:8888]&lt;br /&gt;
** Enter the token, which is visible in the output of the first terminal.&amp;lt;br /&amp;gt;Copy the string behind the &amp;lt;code&amp;gt;token=&amp;lt;/code&amp;gt; and paste it into the input field in the browser.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;Are GPUs accessible from within a running container?&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;Yes.&amp;lt;br /&amp;gt;Unlike Docker, Enroot does not need further command line options to enable GPU passthrough like &amp;lt;code&amp;gt;--runtime=nvidia&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;--privileged&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;Is there something like &amp;lt;code&amp;gt;enroot-compose&amp;lt;/code&amp;gt;?&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;AFAIK no.&amp;lt;br /&amp;gt; Enroot is mainly intended for HPC workloads, not for operating multi-container applications. However, starting and running these applications separately is possible.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;Can I use workspaces to store containers?&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;Yes.&amp;lt;br /&amp;gt;You can define the location of configuration files and storage with environment variables. The &amp;lt;code&amp;gt;ENROOT_DATA_PATH&amp;lt;/code&amp;gt; variable should be set accordingly. Please refer to [https://github.com/NVIDIA/enroot/blob/master/doc/configuration.md#runtime-configuration NVIDIA&amp;#039;s documentation] on runtime configuration.&lt;br /&gt;
&lt;br /&gt;
== Additional resources ==&lt;br /&gt;
&lt;br /&gt;
Source code: [https://github.com/NVIDIA/enroot https://github.com/NVIDIA/enroot]&lt;br /&gt;
&lt;br /&gt;
Documentation: [https://github.com/NVIDIA/enroot/blob/master/doc https://github.com/NVIDIA/enroot/blob/master/doc]&lt;br /&gt;
&lt;br /&gt;
Additional information: &lt;br /&gt;
* [https://archive.fosdem.org/2020/schedule/event/containers_hpc_unprivileged/ FOSDEM 2020 talk] + [https://archive.fosdem.org/2020/schedule/event/containers_hpc_unprivileged/attachments/slides/3711/export/events/attachments/containers_hpc_unprivileged/slides/3711/containers_hpc_unprivileged.pdf slides]&lt;br /&gt;
* [https://slurm.schedmd.com/SLUG19/NVIDIA_Containers.pdf Slurm User Group Meeting 2019 talk]&lt;br /&gt;
&lt;br /&gt;
= Singularity/Apptainer =&lt;br /&gt;
[[File:singularity_logo.svg|center|100px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Excellent documentation is provided on the [https://sylabs.io/docs/ Documentation&amp;amp;Examples] page provided by Sylabs. This documentation here therefore confines itself to simple examples to get to know the essential functionalities.&lt;br /&gt;
&lt;br /&gt;
Using Singularity/Apptainer usually involves two steps:&lt;br /&gt;
&lt;br /&gt;
* Building a container image using singularity build&lt;br /&gt;
&lt;br /&gt;
* Running a container image using singularity run or singularity exec&lt;br /&gt;
&lt;br /&gt;
=== Building an image ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;singularity build ubuntu.sif library://ubuntu&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;This pulls the latest Ubuntu image from Singularity&amp;#039;s [https://cloud.sylabs.io/library Container Library] and locally creates a container image file called ubuntu.sif.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;singularity build alpine.sif docker://alpine&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;This pulls the latest alpine image from Dockerhub and locally creates a container image file called alpine.sif.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;singularity build pytorch-21.04-p3.sif docker://nvcr.io#nvidia/pytorch:21.04-py3&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;This pulls the latest pytorch image from NVIDIA&amp;#039;s NGC registry and locally creates a container image file called pytorch-21.04-p3.sif.&lt;br /&gt;
&lt;br /&gt;
=== Running an image ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;singularity shell ubuntu.sif&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;Start a shell in the Ubuntu container.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;singularity run alpine.sif&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;Start the container alpine.sif and run the default runscript provided by the image.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;singularity exec alpine.sif /bin/ls&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;Start the container alpine.sif and run the /bin/ls command.&lt;br /&gt;
&lt;br /&gt;
=== Container management ===&lt;br /&gt;
&lt;br /&gt;
You can use the &amp;lt;code&amp;gt;singularity search&amp;lt;/code&amp;gt; command to search for images on Singularity&amp;#039;s [https://cloud.sylabs.io/library Container Library].&lt;/div&gt;</summary>
		<author><name>S Braun</name></author>
	</entry>
</feed>