tag:github.com,2008:https://github.com/eth-cscs/sarus/releasesRelease notes from sarus2024-09-05T14:25:47Ztag:github.com,2008:Repository/160826280/1.7.02024-09-05T14:53:20Z1.7.0<h2>Added</h2>
<ul>
<li>Added the <code>sarus ps</code> command to list running containers. More details <a href="https://sarus.readthedocs.io/en/stable/user/user_guide.html#listing-running-containers" rel="nofollow">here</a>.</li>
<li>Added the <code>sarus kill</code> command to terminate (and subsequently remove) containers.</li>
<li>Added the <code>-n, --name</code> option the <code>sarus run</code> command to specify the name of the container to run. If the option is not specified, Sarus assigns a default name in the form <code>sarus-container-*</code>. More details <a href="https://sarus.readthedocs.io/en/stable/user/user_guide.html#naming-the-container" rel="nofollow">here</a></li>
<li>MPI hook: added support for the environment variable <code>MPI_COMPATIBILITY_TYPE</code> that defines the behaviour of the compatibility check of the libraries<br>
that the hook mounts. Valid values are <code>major</code>, <code>full</code> and <code>strict</code>. Default value is <code>major</code>.<br>
More details <a href="https://sarus.readthedocs.io/en/stable/config/mpi-hook.html#hook-configuration" rel="nofollow">here</a>.</li>
<li>MPI hook: added support for the <code>HOOK_ROOTLESS</code> environment variable, enabling the hook to be used in rootless container runtimes. More details <a href="https://sarus.readthedocs.io/en/stable/config/mpi-hook.html#hook-configuration" rel="nofollow">here</a>.</li>
<li>SSH Hook: added a poststop functionality that kills the Dropbear process in case the hook does not join the container's PID namespace. More details <a href="https://sarus.readthedocs.io/en/stable/config/ssh-hook.html#hook-configuration" rel="nofollow">here</a>.</li>
</ul>
<h2>Changed</h2>
<ul>
<li>Configuration templates and documentation for OCI hooks now use the <code>createRuntime</code>, <code>createContainer</code>, or <code>startContainer</code> execution stages instead of the <code>prestart</code> stage, which has been deprecated since version 1.0.2 of the OCI Runtime specification. The only exception is the NVIDIA Container Toolkit hook.</li>
<li>Updated the build environment of the Sarus static standalone package to Alpine Linux 3.20 with a GCC 13.2.1 toolchain.</li>
<li>Updated recommended runc version to 1.1.14</li>
<li>Updated recommended Boost version to 1.85.0</li>
<li>Updated recommended RapidJSON version to commit ab1842a2da</li>
</ul>github-actions[bot]tag:github.com,2008:Repository/160826280/1.6.42024-02-27T15:12:37Z1.6.4<h2>Added</h2>
<ul>
<li>SSH hook: added support for the <code>com.hooks.ssh.port</code> OCI annotation, which allows to customize the port used by the Dropbear server.</li>
</ul>
<h2>Changed</h2>
<ul>
<li>MPI hook: verbosity levels for log messages about ABI compatibility and library replacements have been slightly adjusted.<br>
In particular, a warning about adding libraries into the container has been moved to a higher verbosity level<br>
(i.e. it will only be displayed when using the <code>--verbose</code> or <code>--debug</code> global command-line options).</li>
<li>SSH hook: the default port used by the Dropbear server is now set through the <code>SERVER_PORT_DEFAULT</code> environment variable in the hook JSON configuration file.<br>
The <code>SERVER_PORT</code> variable is still supported for backward compatibility, although <code>SERVER_PORT_DEFAULT</code> takes precedence if set.</li>
</ul>
<h2>Deprecated</h2>
<ul>
<li>SSH hook: usage of the <code>SERVER_PORT</code> environment variable in the hook JSON configuration file has been deprecated.<br>
Support for it will be removed in a future release.</li>
</ul>
<h2>Fixed</h2>
<ul>
<li>Glibc hook: fixed detection of the container's glibc version, which was causing a shell-init error on some systems</li>
<li>SSH hook: permissions on the container's authorized keys file are now set explicitly, fixing possible errors caused by applying unsuitable defaults from the process.</li>
</ul>github-actions[bot]tag:github.com,2008:Repository/160826280/1.6.32024-02-09T00:50:42Z1.6.3<h2>Changed</h2>
<ul>
<li>Changed the implementation of the lock for the image repository metadata file to a mechanism based on flock(2).<br>
The new implementation can support both shared locks (a.k.a. read locks) and exclusive locks (a.k.a. write locks),<br>
and improves the startup time when launching large numbers of containers at scale.</li>
<li>Updated recommended runc version to 1.1.12</li>
<li>Updated recommended libnvidia-container version to 1.14.5</li>
<li>Updated recommended NVIDIA Container Toolkit version to 1.14.5</li>
<li>Updated CI integration tests on Rocky 8 to use Python 3.9, solving a problem of missing wheel packages for the previous Python version</li>
<li>Updated CI distributed tests to use Docker Compose V2 and Compose file format version 3</li>
<li>Updated automatic documentation build to use Sphinx 7.2.6 and Sphinx RTD Theme 2.0.0</li>
</ul>github-actions[bot]tag:github.com,2008:Repository/160826280/1.6.22023-12-07T12:36:43Z1.6.2<h2>Added</h2>
<ul>
<li>SSH Hook: added support for the <code>com.hooks.ssh.pidfile_container</code> OCI annotation, which allows to customize the path to the Dropbear daemon PIDfile inside the container.</li>
<li>SSH Hook: added support for the <code>com.hooks.ssh.pidfile_host</code> OCI annotation, which optionally copies the PIDfile of the Dropbear server to the specified path on the host.</li>
<li>SSH Hook: added support for the <code>OVERLAY_MOUNT_HOME_SSH</code> environment variable, which allows to control the creation of an overlay filesystem on top of the container's <code>${HOME}/.ssh</code> directory.<br>
More details <a href="https://sarus.readthedocs.io/en/stable/config/ssh-hook.html#hook-configuration" rel="nofollow">here</a>.</li>
</ul>github-actions[bot]tag:github.com,2008:Repository/160826280/1.6.12023-10-17T13:22:57Z1.6.1<h2>Added</h2>
<ul>
<li>SSH Hook: added support for the <code>com.hooks.ssh.authorize_ssh_key</code> OCI annotation, which allows to authorize a user-provided public key for connecting to the running container.</li>
<li>Added a User Guide section about using Visual Studio Code's Remote Development extension in conjunction with Sarus and the SSH hook. More details <a href="https://sarus.readthedocs.io/en/stable/user/user_guide.html#remote-development-with-visual-studio-code" rel="nofollow">here</a></li>
</ul>
<h2>Changed</h2>
<ul>
<li>The configuration files for the SSH hook and the Slurm sync hook are no longer generated automatically as part of the CMake installation process.<br>
In other words, the aforementioned hooks are no longer configured and enabled by default.</li>
<li>Updated recommended runc version to 1.1.9</li>
<li>Updated CI tests from source on Fedora (36 -> 38) and OpenSUSE Leap (15.4 -> 15.5)</li>
</ul>
<h2>Fixed</h2>
<ul>
<li>Fixed support for image manifests which are provided by registries as multi-line, not indented JSON</li>
<li>Fixed parsing from the command line of image references which feature registry host and image name, but no namespaces (e.g. <code><registry>/<image></code>)</li>
</ul>
<h2>Security</h2>
<ul>
<li>The installation directory of Sarus binaries is now always verified by the security checks.<br>
Previously the check on this directory could be skipped if no Sarus hooks were configured and if the runc and init binaries were located elsewhere.</li>
</ul>github-actions[bot]tag:github.com,2008:Repository/160826280/1.6.02023-05-25T10:09:37Z1.6.0<h2>Added</h2>
<ul>
<li>Added the <code>sarus hooks</code> command to list the hooks configured for the engine</li>
<li>Added the <code>--annotation</code> option to <code>sarus run</code> for setting custom annotations in the OCI bundle. More details <a href="https://sarus.readthedocs.io/en/stable/user/user_guide.html#setting-oci-annotations" rel="nofollow">here</a></li>
<li>Added the <code>--mpi-type</code> option to <code>sarus run</code> for selecting an MPI hook among those configured by the system administrator</li>
<li>Added a warning message when acquisition of a lock file on the local repository metadata file is taking an unusually long time.<br>
The message is displayed at a <a href="https://sarus.readthedocs.io/en/stable/config/configuration_reference.html#repositorymetadatalocktimings-object-optional" rel="nofollow">configurable interval</a> (default 10 seconds), until the lock acquisition timeout is reached.</li>
<li>Added support for the optional <code>defaultMPIType</code> parameter in the <code>sarus.json</code> configuration file. More details <a href="https://sarus.readthedocs.io/en/stable/config/configuration_reference.html#defaultmpitype-string-optional" rel="nofollow">here</a>.</li>
<li>Added support for the optional <code>repositoryMetadataLockTimings</code> parameter in the <code>sarus.json</code> configuration file. More details <a href="https://sarus.readthedocs.io/en/stable/config/configuration_reference.html#repositorymetadatalocktimings-object-optional" rel="nofollow">here</a>.</li>
<li>Added the AMD GPU OCI hook to provide access to ROCm AMD GPU devices inside the container. More details <a href="https://sarus.readthedocs.io/en/stable/config/amdgpu-hook.html" rel="nofollow">here</a></li>
<li>Added a new OCI hook to perform arbitrary sequences of bind mounts and device mounts into containers.<br>
The hook is meant to streamline the implementation and usage of advanced features which can be enabled through sets of related mounts.<br>
More details <a href="https://sarus.readthedocs.io/en/stable/config/mount-hook.html" rel="nofollow">here</a>.</li>
<li>Added a note about the Boost minimum required version 1.77 when building on ARM.</li>
</ul>
<h2>Changed</h2>
<ul>
<li>Sarus will now exit with an error if an operation requiring a lock file on the local repository metadata cannot acquire a lock within the <a href="https://sarus.readthedocs.io/en/stable/config/configuration_reference.html#repositorymetadatalocktimings-object-optional" rel="nofollow">configured timeout duration</a> (default 60 seconds).<br>
Previously, Sarus would keep attempting to acquire a lock indefinitely.</li>
<li>When printing error traces, entries related to standard C++ exceptions now provide clearer information</li>
<li>Updated recommended runc version to 1.1.6</li>
<li>Updated recommended libnvidia-container version to 1.13.0</li>
<li>Updated recommended NVIDIA Container Toolkit version to 1.13.0</li>
</ul>
<h2>Fixed</h2>
<ul>
<li>Fixed a race condition when pulling private images concurrently with the same user</li>
<li>Fixed a bug which was causing repository metadata files and their corresponding lockfiles to be created or atomically updated with root group ownership after executing a <code>sarus run</code> command.<br>
The aforementioned files are now correctly created or updated with user and group ownership of the user who launched Sarus.</li>
</ul>github-actions[bot]tag:github.com,2008:Repository/160826280/1.5.22022-11-11T22:29:00Z1.5.2<h2>Added</h2>
<ul>
<li>Added support for passing command-line options to <code>mksquashfs</code> through the <code>mksquashfsOptions</code> parameter in the <code>sarus.json</code> configuration file</li>
<li>Added explicit forwarding of standard signals from engine to OCI runtime</li>
<li>Added experimental support for the PMIx v3 interface. Given its experimental nature, this feature has to be enabled through a parameter in the <code>sarus.json</code> configuration file</li>
<li>Added CI unit and integration tests from source on Rocky Linux 8 and 9</li>
</ul>
<h2>Changed</h2>
<ul>
<li>The <code>sarus run</code> and <code>sarus images</code> commands now automatically remove images missing the internal SquashFS or metadata file, and report them as not available</li>
<li>The MPI hook and Glibc hook no longer enter the container PID namespace</li>
<li>The Slurm Global Sync hook and the Timestamp hook no longer enter any container namespace</li>
<li>Updated recommended runc version to 1.1.3</li>
<li>Updated recommended libnvidia-container version to 1.11.0</li>
<li>Updated recommended NVIDIA Container Toolkit version to 1.11.0</li>
<li>Updated documentation about the NVIDIA Container Toolkit to refer more specifically to the NVIDIA Container Runtime hook</li>
<li>The <code>configure_installation.sh</code> script can now acquire custom values for the local and/or centralized repository paths from environment variables.<br>
More details <a href="https://sarus.readthedocs.io/en/stable/config/basic_configuration.html#using-the-configure-installation-script" rel="nofollow">here</a></li>
<li>Updated CI tests from source on Ubuntu (21.10 -> 22.04), Fedora (35 -> 36) and OpenSUSE Leap (15.3 -> 15.4)</li>
</ul>
<h2>Removed</h2>
<ul>
<li>Removed CI tests from source on Ubuntu 20.04 and CentOS 7</li>
</ul>
<h2>Security</h2>
<ul>
<li>The executable pointed by the <code>mksquashfsPath</code> parameter in the <code>sarus.json</code> configuration file has been excluded from the security checks.<br>
The <code>mksquashfs</code> utility is only used by <code>sarus pull</code> and <code>sarus load</code> commands, which already run without privileges</li>
</ul>github-actions[bot]tag:github.com,2008:Repository/160826280/1.5.12022-07-12T10:00:15Z1.5.1<h2>Changed</h2>
<ul>
<li>Changed the default registry to <code>docker.io</code>.<br>
When the server is not entered as part of the image reference, the <code>sarus run</code> command first looks under <code>docker.io</code> repositories and, if the image is not available, falls back to images under the previous default server (<code>index.docker.io</code>). This is done to preserve compatibility with existing workflows.<br>
The <code>sarus images</code> and <code>sarus rmi</code> commands treat images from <code>index.docker.io</code> as images from a 3rd party registry.</li>
<li>If the image manifest obtained from a registry during a pull does not feature the <code>mediaType</code> property, Sarus now attempts to process the manifest as an OCI Manifest V1 instead of failing with an error.</li>
<li>Updated recommended libnvidia-container version to 1.10.0</li>
<li>Updated recommended NVIDIA Container Toolkit version to 1.10.0</li>
<li>Replaced Travis public CICD with Github Actions</li>
</ul>
<h2>Fixed</h2>
<ul>
<li>Fixed an issue in the generation of manifest digests, where the digest result was incorrectly influenced by JSON formatting</li>
<li>Fixed an inconsistency with Skopeo which was preventing to pull private images from Docker Hub</li>
</ul>github-actions[bot]tag:github.com,2008:Repository/160826280/1.5.02022-05-31T16:58:40Z1.5.0<h2>Added</h2>
<ul>
<li>Added <a href="https://github.com/containers/skopeo">Skopeo</a> as a dependency to pull or load container images</li>
<li>Added <a href="https://umo.ci/" rel="nofollow">Umoci</a> as a dependency to unpack OCI images</li>
<li>Added support for pulling, running and removing images by digest</li>
<li>Added the <code>--digests</code> option to <code>sarus images</code> for displaying digests of locally available images</li>
<li>Added the <code>--username</code> and <code>--password-stdin</code> options to <code>sarus pull</code> for supplying authentication credentials directly on the command line. More details <a href="https://sarus.readthedocs.io/en/stable/user/user_guide.html#pulling-images-from-private-repositories" rel="nofollow">here</a></li>
<li>Added support for the optional <code>containersPolicy</code> parameter in the <code>sarus.json</code> configuration file. More details <a href="https://sarus.readthedocs.io/en/stable/config/configuration_reference.html#containerspolicy-object-optional" rel="nofollow">here</a>.</li>
<li>Added support for the optional <code>containersRegistries.dPath</code> parameter in the <code>sarus.json</code> configuration file. More details <a href="https://sarus.readthedocs.io/en/stable/config/configuration_reference.html#containersregistries-dpath-string-optional" rel="nofollow">here</a>.</li>
<li>Added support for labels defined in OCI image configurations</li>
<li>Added <a href="https://sarus.readthedocs.io/en/stable/glossary.html" rel="nofollow">glossary</a> page to the documentation</li>
<li>Added CI unit and integration tests from source on Ubuntu 21.10, Debian 11 and Fedora 35</li>
<li>Added git submodule for RapidJSON (commit <a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/Tencent/rapidjson/commit/fcb23c2dbf/hovercard" href="https://github.com/Tencent/rapidjson/commit/fcb23c2dbf">Tencent/rapidjson@<tt>fcb23c2dbf</tt></a>) to simplify dependency management and build process</li>
</ul>
<h2>Changed</h2>
<ul>
<li>The <code>sarus images</code> command now displays the image ID by default.<br>
The image ID, as defined by the OCI Image Specification, is the hash of the image's configuration JSON. More details <a href="https://github.com/opencontainers/image-spec/blob/main/config.md#imageid">here</a>.</li>
<li>The <code>sarus pull</code> command now skips the pull if the requested image is already available locally and up-to-date</li>
<li>zlib is no longer a dependency of Sarus itself, but remains a dependency of the Dropbear software used by the SSH hook</li>
<li>Updated the build environment of the Sarus static standalone package to Alpine Linux 3.15</li>
</ul>
<h2>Removed</h2>
<ul>
<li>Removed the <code>insecureRegistries</code> parameter from <code>sarus.json</code> and the built-in support for insecure registries.<br>
Access to insecure registries via Skopeo must now be enabled through containers-registries.conf(5) files. More details <a href="https://sarus.readthedocs.io/en/stable/user/user_guide.html#pulling-images-from-insecure-registries" rel="nofollow">here</a>.</li>
<li>Removed dependencies on cpprestsdk, libarchive, OpenSSL, libcap, and libexpat</li>
<li>Removed CI unit and integration tests from source on Ubuntu 18.04, Debian 10 and Fedora 34</li>
</ul>Madeekstag:github.com,2008:Repository/160826280/1.4.22022-03-04T10:51:24Z1.4.2<h3>Changed</h3>
<ul>
<li>The Glibc hook now uses the output of <code>ldd</code> to detect the version of glibc</li>
<li>Sarus now attempts to parse the Bearer authorization token regardless of the value of the <code>Content-Type</code> response header when pulling images</li>
</ul>Madeeks