6e6481e09a
Parallel package-type PRs conflict because every type edits the same shared lines (README tables, provider.go, server.go imports, the package type list, UI maps, the e2e caching table). A new type now only adds files.
- move per-type README sections into docs/<type>/{remote,local,virtual}.md
- split provider.go capability and metadata types into cap_*.go and metadata_*.go
- import providers via internal/provider/all, one file per type
- declare each package type in package_type_<type>.go, registered via init()
- split the e2e caching cases and UI colours/snippets into per-type files
Reviewed-on: #150
Co-authored-by: unkin-agent <unkin-agent@unkin.net>
Co-committed-by: unkin-agent <unkin-agent@unkin.net>
18 lines
842 B
Markdown
18 lines
842 B
Markdown
# Local docker registry
|
|
|
|
A local `docker` repo is a real container registry, not a mirror: it serves the
|
|
Docker Registry HTTP API V2 for both push and pull, so any client (`docker`,
|
|
`podman`, `skopeo`, `buildah`) can use it directly.
|
|
|
|
```sh
|
|
docker tag myapp:latest artifactapi.example.com/docker-internal/myapp:latest
|
|
docker push artifactapi.example.com/docker-internal/myapp:latest
|
|
docker pull artifactapi.example.com/docker-internal/myapp:latest
|
|
```
|
|
|
|
The first path segment after `/v2/` is the artifactapi repo name; the remainder
|
|
is the image name. Blobs and manifests are stored through the shared
|
|
content-addressable store (deduplicated by digest, reaped by GC once
|
|
unreferenced); tags are mutable references and re-pushing a tag moves it. Blob
|
|
uploads support both the monolithic and chunked (`POST`/`PATCH`/`PUT`) flows.
|