example | ||
docker-artifact.sh | ||
README.md |
Docker Artifact
Use docker image labels to identify which image layer contains a particular file, enabling retrieving just that file (well, the layer the file is in) from the image without needing to download the whole image.
Setup
Prerequisites
Requires the jq
and curl
programs to be installed on your PATH.
Installation
Download docker-artifact.sh
file from this repository and install it at ~/.docker/cli-plugins/docker-artifact
(note the lack of .sh
suffix) with execute permissions. Validate correct installation by observing the artifact
command listed in docker help
.
-OR-
Run the following command in your shell:
mkdir -p ~/.docker/cli-plugins && \
curl https://raw.githubusercontent.com/infogulch/docker-artifact/master/docker-artifact.sh > ~/.docker/cli-plugins/docker-artifact && \
chmod +x ~/.docker/cli-plugins/docker-artifact && \
docker help | grep artifact > /dev/null && echo "Docker artifact install succeeded!" || echo "Docker artifact install failed :("
Usage
docker artifact label [image] [file-path-1] [file-path-2] ...
Adds labels to an existing image enabling the download
command below to pull just the layers that contain the file paths specified above.
Note: download
must download the whole layer; to optimize for artifact download size, add the target files to the image in a separate layer.
docker artifact download [image] [file-path-1] [file-path-2]
Downloads the image layers associated with the file paths specified and extracts them into the current directory.
See also
Related to timwillfixit's original docker-artifact
in spirit, though not in history. The primary difference is that this uses a more precice strategy to search for files.