tag:github.com,2008:https://github.com/eth-cscs/sarus/releases Release notes from sarus 2024-09-05T14:25:47Z tag:github.com,2008:Repository/160826280/1.7.0 2024-09-05T14:53:20Z 1.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.4 2024-02-27T15:12:37Z 1.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.3 2024-02-09T00:50:42Z 1.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.2 2023-12-07T12:36:43Z 1.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.1 2023-10-17T13:22:57Z 1.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 -&gt; 38) and OpenSUSE Leap (15.4 -&gt; 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>&lt;registry&gt;/&lt;image&gt;</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.0 2023-05-25T10:09:37Z 1.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.2 2022-11-11T22:29:00Z 1.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 -&gt; 22.04), Fedora (35 -&gt; 36) and OpenSUSE Leap (15.3 -&gt; 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.1 2022-07-12T10:00:15Z 1.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.0 2022-05-31T16:58:40Z 1.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> Madeeks tag:github.com,2008:Repository/160826280/1.4.2 2022-03-04T10:51:24Z 1.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