Extract Oci Archive

Use when you need to extract an OCI archive to inspect its contents, get the rootfs layer, or read the image config.

coreos df49ee3 1.0 KB Updated

File contents

Extract OCI Archive

Extract the OCI archive structure

mkdir /tmp/oci-extracted
tar -xf /path/to/image.ociarchive -C /tmp/oci-extracted

Get the manifest digest from index.json

MANIFEST=$(jq -r '.manifests[0].digest' /tmp/oci-extracted/index.json \
    | cut -d: -f2)

Extract a layer to get the rootfs

For a single-layer image:

LAYER=$(jq -r '.layers[0].digest' \
    /tmp/oci-extracted/blobs/sha256/${MANIFEST} | cut -d: -f2)
mkdir /tmp/rootfs
tar -xf /tmp/oci-extracted/blobs/sha256/${LAYER} -C /tmp/rootfs

For multi-layer images, extract each layer in order and overlay them.

Read the image config

The config contains the created timestamp, entrypoint, labels, etc.:

CONFIG=$(jq -r '.config.digest' \
    /tmp/oci-extracted/blobs/sha256/${MANIFEST} | cut -d: -f2)
jq . /tmp/oci-extracted/blobs/sha256/${CONFIG}

coreos/chunkah/tree/main/.agents/skills/extract-oci-archive commit df49ee3099

Frequently asked questions

npx skillmds@latest add coreos/extract-oci-archive