Imágenes
Qué arranca una máquina: una imagen de Arrakis con SSH y las herramientas habituales, o una imagen propia, pública o privada.
Imágenes de Arrakis
Una máquina arranca una imagen de Arrakis salvo que elijas otra. Cada una es una imagen base oficial a la que se añaden SSH, un banner de inicio de sesión y herramientas de uso diario: git, git-lfs, tmux, htop, nvtop, rsync, curl, wget, jq y un editor. Python está en el PATH en todas las sesiones SSH.
| Imagen | Qué contiene | Imagen de Docker |
|---|---|---|
| PyTorch 2.14 (predeterminada) | PyTorch 2.14.1, CUDA 13.0, Python 3.12, Ubuntu 24.04 | goodailabs/arrakis:pytorch-2.14.1-cuda13.0 |
| PyTorch 2.14 con el kit de herramientas CUDA | Lo mismo, más nvcc, las cabeceras de CUDA y un compilador | goodailabs/arrakis:pytorch-2.14.1-cuda13.0-devel |
| Kit de herramientas CUDA 13.0 | CUDA 13.0.3, cuDNN 9, nvcc, Python 3.12, Ubuntu 24.04 | goodailabs/arrakis:cuda-13.0.3-devel |
| Ubuntu 26.04 | Python 3.14. El controlador de la GPU viene de la máquina | goodailabs/arrakis:ubuntu-26.04 |
CUDA 13.0 es la versión que trae pip install torch, así que los paquetes wheel compilados para PyTorch son compatibles. Funciona en todas las máquinas de Arrakis, incluidas las Blackwell: todas tienen un controlador de NVIDIA de la serie 580 o posterior. Las imágenes son públicas en Docker Hub, así que puedes descargar la misma en tu propio equipo; goodailabs/arrakis:latest es la predeterminada.
Al iniciar sesión se muestran las GPU de la máquina, la imagen y el espacio libre en disco:
6 × NVIDIA RTX A4000, 16 GB each
PyTorch 2.14.1, CUDA 13.0, Python 3.12.3, Ubuntu 24.04.5 LTS
32 CPU cores, 125 GB memory, 412 GB free in /workspaceTrabaja en /workspace. Todo lo que hay en una máquina, /workspace incluido, se borra cuando se detiene.
Tus propias imágenes
Funciona cualquier imagen: vLLM, SGLang, contenedores de NVIDIA NGC o la imagen propia de tu equipo, pública o privada.
- En Images, elige Add an image y pégala tal como la recibe
docker pull, por ejemplovllm/vllm-openai:v0.11.0. Para una imagen pública, también puedes elegir Your own image al alquilar. - Arrakis consulta primero el registro de la imagen: la imagen debe existir, poder descargarse y tener una compilación para linux/amd64. Una errata o un token incorrecto se rechazan antes de cobrar nada.
- Registros: Docker Hub, GitHub (
ghcr.io), Amazon ECR y ECR Public, Google (Artifact Registry ygcr.io), Azure (azurecr.io), NVIDIA NGC (nvcr.io), Quay, GitLab y Microsoft (mcr.microsoft.com), o el tuyo propio: Harbor, Artifactory, Nexus, un GitLab o Quay autoalojado, o cualquier registro con su nombre DNS público, comoregistry.example.com:5000/team/app:v1. - SSH se añade a cualquier imagen al arrancar, así que siempre inicias sesión como root de la misma forma. La imagen necesita un shell.
- El primer arranque en una máquina descarga la imagen. Las imágenes grandes tardan más: una imagen de 12 GB puede tardar de 10 a 20 minutos en una red lenta.
Imágenes privadas
Marca It's private: log in to pull it al añadir la imagen e indica las credenciales que usarías con docker login. Arrakis comprueba la imagen con ellas antes de guardarla, las mantiene cifradas y solo las usa para descargar esta imagen cuando alquilas. La contraseña no se vuelve a mostrar.
| Registro | Nombre de usuario | Contraseña o token |
|---|---|---|
| Docker Hub | Tu nombre de usuario de Docker Hub | Un token de acceso personal de solo lectura |
GitHub (ghcr.io) | Tu nombre de usuario de GitHub | Un token clásico solo con read:packages |
Amazon ECR (<account>.dkr.ecr.<region>.amazonaws.com) | Un ID de clave de acceso | Su clave de acceso secreta |
Google (<region>-docker.pkg.dev, gcr.io) | _json_key | La clave JSON de una cuenta de servicio con el rol Artifact Registry Reader |
Azure (<name>.azurecr.io) | Un token de repositorio o una entidad de servicio | Su contraseña, con permiso solo de descarga |
NVIDIA NGC (nvcr.io) | $oauthtoken | Tu clave de API de NGC |
GitLab (registry.gitlab.com) | El nombre de usuario de un token de despliegue | El token de despliegue, con read_registry |
| Quay | Una cuenta de robot | Su token |
| Tu propio registro | El nombre de usuario que pida | Su contraseña o token |
- Amazon ECR: usa un usuario de AWS que solo pueda descargar imágenes (la política
AmazonEC2ContainerRegistryReadOnly). Cada vez que alquilas, Arrakis cambia la clave por unas credenciales de descarga nuevas válidas durante 12 horas, las que imprimeaws ecr get-login-password, así que la máquina nunca ve la clave. - Tu propio registro: las máquinas descargan directamente de él, estén donde estén, así que debe responder en internet público por HTTPS con un certificado de una autoridad pública (como Let's Encrypt). Un registro detrás de una VPN o de una lista de IP permitidas no es accesible, y uno con un certificado autofirmado se rechaza.
- Usa un token que solo pueda leer. La máquina descarga la imagen con él, y la imagen puede quedarse en caché en esa máquina después de que termine tu alquiler, así que no metas secretos en la imagen: pásalos cuando se ejecute.
- Para cambiar un token, elige Change login junto a la imagen o vuelve a guardar la misma imagen con el nuevo. Al eliminar la imagen se borran sus credenciales de todos los sitios donde Arrakis las guardaba.
Al arrancar
| Opción | Qué se ejecuta | Úsala para |
|---|---|---|
| Wait for me to log in (predeterminada) | Nada. La máquina te espera | Entrenamiento, notebooks, cualquier cosa que inicies por SSH |
| Run the image's command | El punto de entrada y el comando propios de la imagen | Servidores como vLLM, TGI o SGLang |
| Run a command | Una sola línea que tú indicas, como python -m http.server 8000 | Un trabajo que arranca solo |
Si el comando termina, ya no se puede acceder a la máquina. En caso de duda, elige Wait for me to log in.
Accede a un servidor de la máquina a través de SSH:
ssh -L 8000:localhost:8000 root@<host> -p <port>
curl localhost:8000/v1/modelsVariables de entorno
Añade pares KEY=value a una imagen, uno por línea. Se guardan con la imagen, así que no pongas secretos en ellos: defínelos por SSH, por ejemplo con export HF_TOKEN=... en tu sesión.
Desde la CLI, la API y los agentes
arrakis images list
arrakis images add vllm/vllm-openai:v0.11.0 --start image
arrakis instances create --node-id <node> --image vllm/vllm-openai:v0.11.0 --start image --termination-hours 2Una imagen privada lleva sus credenciales, con el token por stdin, como lo recibe docker login:
echo "$GITHUB_TOKEN" | arrakis images add ghcr.io/acme/trainer:v3 --username acme-bot --password-stdin
arrakis instances create --node-id <node> --template-id <image id> --termination-hours 2curl -X POST $ARRAKIS_URL/v1/instances -H "Authorization: Bearer $ARRAKIS_TOKEN" -H "Content-Type: application/json" \
-d '{"node_id": "<node>", "name": "vllm", "termination_hours": 2, "ssh_public_key": "ssh-ed25519 AAAA...",
"image": "vllm/vllm-openai:v0.11.0", "start": "image"}'GET /v1/templateslista las imágenes de Arrakis y las tuyas;POST /v1/templatesguarda una (image,start,command,environmenty, para una imagen privada,registry_usernameyregistry_password). La contraseña es de solo escritura: las respuestas muestranprivateyregistry_username.PATCH /v1/templates/{id}con ambos reemplaza las credenciales.POST /v1/instancesarrancatemplate_ido cualquierimagepública con unstart.- Por MCP,
list_imageslas lista, con las privadas marcadas, yrent_gpuaceptatemplate_idoimage.
¿Eres un agente? Esta página en Markdown.