Open wtraylor opened 3 years ago
thanks a lot for bringing this up @wtraylor. Similarly to what was mentioned in https://github.com/getpopper/popper/issues/956#issuecomment-754715885, this could be solved by doing:
steps:
- uses: docker://docker:20.10.1
args: ["image", "load", "--input", "image.tar.gz"]
In general, there is a portability problem with this approach though. The above is specific to docker, and as you mentioned it wouldn't work on other container runtimes.
So one alternative to address this would be to allow file-based images to be referenced in the new syntax that will be introduced by #907. This new feature that will be implemented as part of #907 has the goal of abstracting the underlying engine with regards to the manipulation of images. As long as the tarball is an OCI-compliant image, and as long as the underlying engine supports OCI images, this would work in an engine-agnostic way.
The Problem
A reproducible project should be self-contained, that is contain all files and dependencies necessary to re-execute it.
For that reason I would like to include my Docker image file in the repository. I don’t want to rely on Docker Hub as an external dependency.
Currently, Popper allows me to specify a custom
Dockerfile
, but that in turn inevitably relies on a base layer from a Docker registry like Docker Hub.My Current Workaround
I save my base image to a file and add it with Git-LFS to the repo:
Then I load the image in the first step of the Popper workflow:
That fails if Popper runs itself in a container (see #956).
Suggestion
Allow a file in the
uses:
field like this:For Singularity it is natural to load an image from file, and Docker provides
docker image load
. However, I don’t know how easy it would be to run Singularity from a Docker image file or vice versa.