-
Notifications
You must be signed in to change notification settings - Fork 32
Open
Description
It would be nice to have zsync2 as Docker/Podman/apptainer images besides AppImage.
In an HPC environment, there is in general no option to install AppImage.
Singularity/Apptainer (http://apptainer.org/) and Podman (rootless Docker) is for example the only way to run containers on our HPC infrastructure. zsync2 is quite difficult to compile natively on old RedHat versions.
Docker/Podman and SingularityApptainer images are quite easy to make from the Apptainer image.
prepare_zsync2_rootfs.sh:
#!/bin/bash
# Ubuntu Bionic OCI core root image.
ubuntu_oci_root_image_url='https://partner-images.canonical.com/oci/bionic/current/ubuntu-bionic-oci-amd64-root.tar.gz'
ubuntu_oci_root_image_file='ubuntu-bionic-oci-amd64-root.tar.gz'
# Get version/commit from AppImage release links: https://github.com/AppImage/zsync2/releases
zsync2_version='2.0.0-alpha-1-20220602'
zsync2_commit='51-4e549b6'
zsync2_app_image_url="https://github.com/AppImage/zsync2/releases/download/${zsync2_version}/zsync2-${zsync2_commit}-x86_64.AppImage"
zsync2_app_image_file="zsync2-${zsync2_commit}-x86_64.AppImage"
# Download Ubuntu Bionic OCI core root image if not available or out of date.
if [ ! -e "${ubuntu_oci_root_image_file}" ] ; then
curl -R -L -O "${ubuntu_oci_root_image_url}";
else
# Only download Ubuntu OCI core root image, if there is a newer version.
curl -R -L -O -z "${ubuntu_oci_root_image_file}" "${ubuntu_oci_root_image_url}";
fi
# Download zsync2 AppImage if not availabe.
if [ ! -e "${zsync2_app_image_file}" ] ; then
curl -R -L -O "${zsync2_app_image_url}";
chmod a+x "${zsync2_app_image_file}";
fi
rm -rf ./squashfs-root/
# Extract AppImage.
"./${zsync2_app_image_file}" --appimage-extract
# Fix symlink.
rm -r ./squashfs-root/usr/share/doc/libhogweed4
ln -s libnettle6 ./squashfs-root/usr/share/doc/libhogweed4
DockerFile
FROM scratch
ADD /squashfs-root/usr/ /usr
ADD ubuntu-bionic-oci-amd64-root.tar.gz /
CMD ["bash"]
zsync2.def : Singularity/Apptainer file.
Bootstrap: scratch
%setup
cp -dR -n --preserve=mode,timestamps ./squashfs-root/usr "${APPTAINER_ROOTFS}/"
tar xzf ubuntu-bionic-oci-amd64-root.tar.gz -C "${APPTAINER_ROOTFS}"
# Build with Docker.
docker build -t zsync-${zsync2_version}-x86_64 .
# Build with Podman.
podman build -t zsync-${zsync2_version}-x86_64 .
# Build with Singularity.
sudo singularity build "${zsync2_app_image_file%.AppImage}.sif" zsync2.def
# Buld with Apptainer.
sudo apptainer build "${zsync2_app_image_file%.AppImage}.sif" zsync2.def
# Run with Docker/Podman.
podman run \
--mount 'type=bind,source=/,destination=/local_filesystem' \
--workdir=/local_filesystem/${PWD} \
zsync-${zsync2_version}-x86_64 \
zsyncmake2 -u https://test.com/bigfile.bin bigfile.bin
# Run with Singularity/Apptainer.
singularity exec \
-B ${PWD} \
./zsync2-51-4e549b6-x86_64.sif \
zsyncmake2 -u https://test.com/bigfile.bin bigfile.bin
We have files that are over 100G in some cases, so zsync2 would be nice to have to make sure the download is correct (and can be resumed).
Metadata
Metadata
Assignees
Labels
No labels