Saltar al contenido principal

Puertos

Declare un puerto en una plantilla y Superheat lo publica cuando la instancia se lanza, asignando el puerto del contenedor a un puerto del host en la máquina que alquiló. Todo aquello en lo que escuche su carga de trabajo y quiera alcanzar desde fuera — un servidor de inferencia, una interfaz web, un endpoint de métricas — necesita una fila aquí.

Declarar un puerto

Cada fila de la sección Puertos tiene cuatro partes.

ParteAceptaSignificado
Puerto del contenedorde 1 a 65535El puerto en el que escucha su proceso dentro del contenedor.
Protocolotcp, udp, http, httpsLo que sirve el puerto. http y https se publican sobre TCP; la distinción deja constancia de la intención y determina cómo presenta el puerto la consola.
Etiquetahasta 64 caracteresUn nombre legible, que se muestra en el detalle de la plantilla. Algunos valores están reservados — vea más abajo.
Públicointerruptor, activado de forma predeterminadaSe registra en la entrada del puerto.

Usted declara solo el puerto del contenedor. El puerto del host se asigna en el lanzamiento desde el rango publicado de la máquina, y no lo sabrá de antemano. Dentro del contenedor, cada puerto TCP publicado está disponible como SUPERHEAT_TCP_PORT_<container_port>:

echo "$SUPERHEAT_TCP_PORT_7860"

Esa variable de entorno es la forma de leer el puerto del host desde dentro de su carga de trabajo. La pestaña Conectar de la página de la instancia muestra el comando SSH y, cuando la plantilla lo tiene, el enlace Abrir o Abrir JupyterLab. Consulte Puertos y el botón Abrir.

Etiquetas

Las etiquetas se recortan y se comparan sin distinguir mayúsculas de minúsculas, y seis de ellas se asignan a los cuatro roles reservados.

EtiquetaEfecto
open, open_button, open-buttonConvierte este puerto en el destino del botón Abrir. El puerto se publica con el rol open_button y su número se pasa al contenedor como OPEN_BUTTON_PORT.
sshSe publica con el rol ssh.
jupyterSe publica con el rol jupyter.
appSe publica con el rol app — el predeterminado.
cualquier otra cosaSe conserva como etiqueta de visualización; el puerto se publica con el rol app.

Así que un puerto etiquetado Jupyter, jupyter o JUPYTER significa lo mismo en los tres casos, mientras que Gradio UI es un puerto de aplicación normal con un nombre amistoso.

Puertos que usted no declara

Los modos de lanzamiento anteponen los puertos que necesitan. En modo ssh, el puerto de contenedor 22 se agrega por usted. En modo jupyter se agregan tanto el 22 como el 8080. Declararlos usted mismo es inofensivo pero redundante: la lista se deduplica por puerto de contenedor y protocolo, y la entrada implícita gana sobre una entrada app normal.

La precedencia, de mayor a menor, es ssh y jupyter, después open_button y después app. Eso es lo que permite que una plantilla declare un puerto en la lista y además apunte el botón Abrir a él: la entrada que sobrevive lleva el rol open_button.

En modo args no se antepone nada. Si quiere acceso SSH a una plantilla args, es usted quien debe ejecutar un servidor SSH en la imagen y declarar el puerto, o bien debería pasar al modo ssh con una imagen derivada de la base.

El puerto del botón Abrir

La consola muestra un botón Abrir en una instancia cuando la plantilla nombró un puerto destino. Defínalo etiquetando exactamente un puerto como open:

{
"ports": [
{ "container_port": 7860, "protocol": "http", "label": "open", "public": true },
{ "container_port": 9090, "protocol": "http", "label": "metrics", "public": true }
]
}

Etiquete más de un puerto como open y gana el último de la lista, que rara vez es lo que quería decir. Declare uno solo.

En modo jupyter no necesita ningún puerto de botón Abrir: la consola muestra Abrir JupyterLab a partir del rol de Jupyter, con el token de acceso ya en la URL. Consulte Abrir JupyterLab.

Los puertos forman parte de la receta

La lista de puertos es un campo de lanzamiento, así que editarla vuelve a generar el hash_id de la plantilla e invalida los enlaces compartidos fijados. Las instancias en ejecución conservan el mapa de puertos con el que se lanzaron; un puerto nuevo solo aparece en las instancias desplegadas después de la edición.