Downloading OCI images through the CLI instead of the GUI

PhiboBastiaans

New Member
Dec 9, 2025
4
1
3
As the title says basically - Does anyone know if and how it's possible on Proxmox 9.1+ to download the OCI images through the CLI instead of the GUI?
 
Ah - as I planned tonight - I intercepted the API call, converted it into a cURL command and that worked fine after a bit of tweaking.

Maybe not the official way, but it works for me
 
  • Like
Reactions: bbgeek17
An API endpoint seems to be in develomment: [pve-devel] [PATCH storage v5 13/17] api: add storage/{storage}/oci-registry-pull method.

Otherwise it just does skopeo copy docker://$reference oci-archive:$path/$filename.tar.
With$reference=registry.example.org/name, $path=PVE::Storage::get_vztmpl_dir($cfg, $storage) (/var/lib/vz/template/cache in my case), $filename = PVE::Storage::normalize_content_filename($reference).
We then would have for hello-world image:
skopeo copy docker://docker.io/hello-world:latest oci-archive:/var/lib/vz/template/cache/hello-world_latest.tar
 
An API endpoint seems to be in develomment: [pve-devel] [PATCH storage v5 13/17] api: add storage/{storage}/oci-registry-pull method.

Otherwise it just does skopeo copy docker://$reference oci-archive:$path/$filename.tar.
With$reference=registry.example.org/name, $path=PVE::Storage::get_vztmpl_dir($cfg, $storage) (/var/lib/vz/template/cache in my case), $filename = PVE::Storage::normalize_content_filename($reference).
We then would have for hello-world image:
skopeo copy docker://docker.io/hello-world:latest oci-archive:/var/lib/vz/template/cache/hello-world_latest.tar
Ok cool, will wait patiently for the next release.

Thanks, didn’t know about skopeo. But since my last reply I’m using the API already in combination with Ansible. Works excellent in quickly spin up OCI LXC’s

Next project for me will be using an entire docker compose file/paste to create OCI LXC’s automatically, including adding the given env vars to the LXC. I’m a bit confused on how to put multiple in one LXC, honestly, I don’t think this is possible. I want to find a way to reduce the manual steps even further and I’m having fun learning this way.

Oh and persistent storage…