Refresh release docs for Docker Hub environments

This commit is contained in:
Thales Maciel 2026-03-09 18:56:33 -03:00
parent 6988d85f7d
commit 7ccab61a1b
6 changed files with 44 additions and 7 deletions

View file

@ -42,8 +42,9 @@ Current official environments in the shipped catalog:
- `debian:12-build` - `debian:12-build`
The package ships the embedded Firecracker runtime and a package-controlled environment catalog. The package ships the embedded Firecracker runtime and a package-controlled environment catalog.
Official environments are pulled as OCI artifacts from Docker Hub into a local cache on first use or Official environments are pulled as OCI artifacts from public Docker Hub repositories into a local
through `pyro env pull`. cache on first use or through `pyro env pull`.
End users do not need registry credentials to pull or run official environments.
## CLI ## CLI
@ -198,13 +199,16 @@ Official environment publication is automated through
For a local publish against Docker Hub: For a local publish against Docker Hub:
```bash ```bash
export DOCKERHUB_USERNAME='your-dockerhub-username'
export DOCKERHUB_TOKEN='your-dockerhub-token'
make runtime-materialize make runtime-materialize
OCI_REGISTRY_USERNAME="$DOCKERHUB_USERNAME" OCI_REGISTRY_PASSWORD="$DOCKERHUB_TOKEN" \ make runtime-publish-official-environments-oci
make runtime-publish-official-environments-oci
``` ```
`make runtime-publish-environment-oci` auto-exports the OCI layout for the selected `make runtime-publish-environment-oci` auto-exports the OCI layout for the selected
environment if it is missing. environment if it is missing.
The publisher accepts either `DOCKERHUB_USERNAME` and `DOCKERHUB_TOKEN` or
`OCI_REGISTRY_USERNAME` and `OCI_REGISTRY_PASSWORD`.
Docker Hub uploads are chunked by default for large rootfs layers; if you need to tune a slow Docker Hub uploads are chunked by default for large rootfs layers; if you need to tune a slow
link, use `PYRO_OCI_UPLOAD_TIMEOUT_SECONDS`, `PYRO_OCI_UPLOAD_CHUNK_SIZE_BYTES`, and link, use `PYRO_OCI_UPLOAD_TIMEOUT_SECONDS`, `PYRO_OCI_UPLOAD_CHUNK_SIZE_BYTES`, and
`PYRO_OCI_REQUEST_TIMEOUT_SECONDS`. `PYRO_OCI_REQUEST_TIMEOUT_SECONDS`.

View file

@ -7,6 +7,7 @@
- KVM available at `/dev/kvm` - KVM available at `/dev/kvm`
- support for Firecracker microVMs - support for Firecracker microVMs
- sufficient disk for the embedded runtime files and cached OCI environment images - sufficient disk for the embedded runtime files and cached OCI environment images
- outbound HTTPS access to `registry-1.docker.io` for first-run installs or `pyro env pull`
## Required For Guest Networking ## Required For Guest Networking

View file

@ -4,6 +4,7 @@
- Linux x86_64 host - Linux x86_64 host
- Python 3.12+ - Python 3.12+
- `uv`
- `/dev/kvm` - `/dev/kvm`
If you want outbound guest networking: If you want outbound guest networking:
@ -20,6 +21,12 @@ Run the MCP server directly from the package without a manual install:
uvx --from pyro-mcp pyro mcp serve uvx --from pyro-mcp pyro mcp serve
``` ```
Prefetch the default official environment:
```bash
uvx --from pyro-mcp pyro env pull debian:12
```
Run one command in a curated environment: Run one command in a curated environment:
```bash ```bash
@ -38,6 +45,7 @@ uvx --from pyro-mcp pyro env list
uv tool install pyro-mcp uv tool install pyro-mcp
pyro --version pyro --version
pyro env list pyro env list
pyro env pull debian:12
pyro env inspect debian:12 pyro env inspect debian:12
pyro doctor pyro doctor
``` ```

View file

@ -45,9 +45,27 @@ Primary facade:
- `Pyro` - `Pyro`
Supported public methods: Supported public entrypoints:
- `create_server()`
- `Pyro.create_server()` - `Pyro.create_server()`
- `Pyro.list_environments()`
- `Pyro.pull_environment(environment)`
- `Pyro.inspect_environment(environment)`
- `Pyro.prune_environments()`
- `Pyro.create_vm(...)`
- `Pyro.start_vm(vm_id)`
- `Pyro.exec_vm(vm_id, *, command, timeout_seconds=30)`
- `Pyro.stop_vm(vm_id)`
- `Pyro.delete_vm(vm_id)`
- `Pyro.status_vm(vm_id)`
- `Pyro.network_info_vm(vm_id)`
- `Pyro.reap_expired()`
- `Pyro.run_in_vm(...)`
Stable public method names:
- `create_server()`
- `list_environments()` - `list_environments()`
- `pull_environment(environment)` - `pull_environment(environment)`
- `inspect_environment(environment)` - `inspect_environment(environment)`

View file

@ -7,6 +7,7 @@ Cause:
- the environment cache directory is not writable - the environment cache directory is not writable
- the configured registry artifact is unavailable - the configured registry artifact is unavailable
- the environment download was interrupted - the environment download was interrupted
- the host cannot reach `registry-1.docker.io`
Fix: Fix:
@ -16,6 +17,9 @@ pyro env prune
pyro env pull debian:12 pyro env pull debian:12
``` ```
If you are validating a freshly published official environment, also verify that the corresponding
Docker Hub repository is public.
## `pyro run --network` fails before the guest starts ## `pyro run --network` fails before the guest starts
Cause: Cause:

View file

@ -17,14 +17,16 @@ Materialization workflow:
Official environment publication workflow: Official environment publication workflow:
1. `make runtime-materialize` 1. `make runtime-materialize`
2. `OCI_REGISTRY_USERNAME=... OCI_REGISTRY_PASSWORD=... make runtime-publish-official-environments-oci` 2. `DOCKERHUB_USERNAME=... DOCKERHUB_TOKEN=... make runtime-publish-official-environments-oci`
3. or run the repo workflow at `.github/workflows/publish-environments.yml` with Docker Hub credentials 3. or run the repo workflow at `.github/workflows/publish-environments.yml` with Docker Hub credentials
4. if your uplink is slow, tune publishing with `PYRO_OCI_UPLOAD_TIMEOUT_SECONDS`, `PYRO_OCI_UPLOAD_CHUNK_SIZE_BYTES`, and `PYRO_OCI_REQUEST_TIMEOUT_SECONDS` 4. if your uplink is slow, tune publishing with `PYRO_OCI_UPLOAD_TIMEOUT_SECONDS`, `PYRO_OCI_UPLOAD_CHUNK_SIZE_BYTES`, and `PYRO_OCI_REQUEST_TIMEOUT_SECONDS`
Official end-user pulls are anonymous; registry credentials are only required for publishing.
Build requirements for the real path: Build requirements for the real path:
- `docker` - `docker`
- outbound network access to GitHub and Debian snapshot mirrors - outbound network access to GitHub and Debian snapshot mirrors
- enough disk for a kernel build plus 2G ext4 images per profile - enough disk for a kernel build plus 2G ext4 images per source profile
Kernel build note: Kernel build note:
- the kernel builder now defaults to conservative parallelism to avoid compiler crashes on memory-constrained hosts - the kernel builder now defaults to conservative parallelism to avoid compiler crashes on memory-constrained hosts