{"id":18497804,"url":"https://github.com/containers/containers-image-proxy-rs","last_synced_at":"2025-04-04T23:09:29.093Z","repository":{"id":39696536,"uuid":"417598651","full_name":"containers/containers-image-proxy-rs","owner":"containers","description":"containers-image-proxy-rs","archived":false,"fork":false,"pushed_at":"2025-03-20T21:21:19.000Z","size":108,"stargazers_count":22,"open_issues_count":8,"forks_count":9,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-03-28T22:14:32.618Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/containers.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-15T18:29:28.000Z","updated_at":"2025-03-20T21:21:23.000Z","dependencies_parsed_at":"2022-08-30T19:00:37.863Z","dependency_job_id":"f43e0a48-c8e2-431c-af4c-509a670191cd","html_url":"https://github.com/containers/containers-image-proxy-rs","commit_stats":{"total_commits":54,"total_committers":4,"mean_commits":13.5,"dds":0.05555555555555558,"last_synced_commit":"aaaaaad071477884fb24faa1e051619df83ba501"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Fcontainers-image-proxy-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Fcontainers-image-proxy-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Fcontainers-image-proxy-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Fcontainers-image-proxy-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/containers","download_url":"https://codeload.github.com/containers/containers-image-proxy-rs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247261612,"owners_count":20910108,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T13:35:57.512Z","updated_at":"2025-04-04T23:09:29.062Z","avatar_url":"https://github.com/containers.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rust bindings for accessing the Go containers/image stack\n\nThis crate contains a Rust API that forks `/usr/bin/skopeo` and\ntalks to it via a custom API.  You can use it to fetch container\nimages in a streaming fashion.\n\nAt the time of this writing, you will need skopeo 1.6.0 or later.\n\n# Why?\n\nFirst, assume one is operating on a codebase that isn't Go, but wants\nto interact with container images - we can't just include the Go containers/image\nlibrary.\n\nThe primary intended use case of this is for things like\n[ostree-containers](https://github.com/ostreedev/ostree-rs-ext/issues/18)\nwhere we're using container images to encapsulate host operating system\nupdates, but we don't want to involve the [containers/image](github.com/containers/image/)\nstorage layer.\n\nWhat we *do* want from the containers/image library is support for things like\nsignatures and offline mirroring.  More on this below.\n\nForgetting things like ostree exist for a second - imagine that you wanted to \nencapsulate a set of Debian/RPM/etc packages inside\na container image to ship for package-based operating systems.  You could use this to stream\nout the layer containing those packages and extract them directly, rather than serializing\neverything to disk in the containers/storage disk location, only to copy it out again and delete the first.\n\nAnother theoretical use case could be something like [krustlet](https://github.com/deislabs/krustlet),\nwhich fetches WebAssembly blobs inside containers.  Here again, we don't want to involve\ncontainers/storage.\n\n# Desired containers/image features\n\nThere are e.g. Rust libraries like [dkregistry-rs](https://github.com/camallo/dkregistry-rs) and\n[oci-distribution](https://crates.io/crates/oci-distribution) and similar for other languages.\n\nHowever, the containers/image Go library has a lot of additional infrastructure\nthat will impose a maintenance burden to replicate:\n\n - Signatures (`man containers-auth.json`)\n - Mirroring/renaming (`man containers-registries.conf`)\n - Support for `~/.docker/config.json` for authentication as well as `/run`\n\n# Status\n\nAPI is subject to change.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontainers%2Fcontainers-image-proxy-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcontainers%2Fcontainers-image-proxy-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontainers%2Fcontainers-image-proxy-rs/lists"}