Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La plataforma de contenedor de Windows se está expandiendo. Docker fue la primera parte del recorrido del contenedor, ahora estamos creando otras herramientas de plataforma de contenedor.
- containerd/cri: novedad en Windows Server 2019 y Windows 10 1809.
- runhcs: un host de contenedores de Windows equivalente a runc.
- hcs: el Servicio de proceso de host y adaptadores útiles para facilitar el uso.
En este artículo se habla de la plataforma de contenedor Windows y Linux, así como de cada herramienta de plataforma de contenedor.
Plataforma de contenedor de Windows y Linux
En entornos de Linux, las herramientas de administración de contenedores como Docker se basan en un conjunto más granular de herramientas de contenedor: runc y containerd.
arquitectura de Docker en Linux 
runc es una herramienta de línea de comandos de Linux para crear y ejecutar contenedores según la especificación de tiempo de ejecución del contenedor de OCI de .
containerd es un demonio que administra el ciclo de vida del contenedor desde la descarga y el desempaquetado de la imagen de contenedor a su ejecución y supervisión.
En Windows, hemos tomado un enfoque diferente. Cuando empezamos a trabajar con Docker para admitir contenedores de Windows, nos basamos directamente en el HCS (Servicio de proceso de host). Esta entrada de blog está llena de información sobre por qué creamos hcS y por qué tomamos este enfoque para los contenedores inicialmente.
En este momento, Docker todavía llama directamente a HCS. Sin embargo, en el futuro, las herramientas de administración de contenedores se expandirán para incluir contenedores de Windows y el host de contenedor de Windows, y podrían llamar a containerd y runhcs de la misma manera que llaman a containerd y runc en Linux.
runhcs
runhcs es una bifurcación de runc. Al igual que runc, runhcs es un cliente de línea de comandos para ejecutar aplicaciones empaquetadas según el formato Open Container Initiative (OCI) y es una implementación compatible de la especificación Open Container Initiative.
Las diferencias funcionales entre runc y runhcs incluyen:
runhcsse ejecuta en Windows. Se comunica con el HCS para crear y administrar contenedores.runhcspuede ejecutar una variedad de tipos de contenedor diferentes.- Aislamiento de Hyper-V de Windows y Linux
- Contenedores de procesos de Windows (la imagen de contenedor debe coincidir con el host del contenedor)
Uso:
runhcs run [ -b bundle ] <container-id>
<container-id> es el nombre de la instancia de contenedor que va a iniciar. El nombre debe ser único en el host del contenedor.
El directorio de paquete (con -b bundle) es opcional.
Al igual que con runc, los contenedores se configuran mediante agrupaciones. El paquete de un contenedor es el directorio con el archivo de especificación OCI del contenedor, "config.json". El valor predeterminado de "bundle" es el directorio actual.
El archivo de especificación OCI, "config.json", tiene que tener dos campos para ejecutarse correctamente:
- Ruta de acceso al espacio temporal del contenedor
- Ruta de acceso al directorio de capa del contenedor
Los comandos de contenedor disponibles en runhcs incluyen:
Herramientas para crear y ejecutar un contenedor
- run crea y ejecuta un contenedor
- create crea un contenedor
Herramientas para administrar procesos que se ejecutan en un contenedor:
- iniciar ejecuta el proceso definido por el usuario en un contenedor creado
- exec ejecuta un nuevo proceso dentro del contenedor
- pause suspende todos los procesos dentro del contenedor
- reanudar reanuda todos los procesos que fueron pausados anteriormente
- ps ps muestra los procesos que se ejecutan dentro de un contenedor
Herramientas para administrar el estado de un contenedor
- estado muestra el estado de un contenedor
- kill envía la señal especificada (valor predeterminado: SIGTERM) al proceso de inicialización del contenedor
- delete elimina los recursos mantenidos por el contenedor que a menudo se usan con el contenedor desasociado
El único comando que se podría considerar multicontenedor es list. Enumera los contenedores en ejecución o en pausa iniciados por runhcs con la raíz especificada.
HCS
Tenemos dos contenedores disponibles en GitHub para interactuar con HCS. Dado que HCS es una API de C, los contenedores facilitan la llamada a HCS desde lenguajes de nivel superior.
- hcsshim - HCSShim está escrito en Go y es la base para runhcs. Toma la versión más reciente de AppVeyor o céntela tú mismo.
- dotnet-computevirtualization: es un contenedor de C# para HCS.
Si desea usar el HCS (ya sea directamente o a través de un contenedor), o desea hacer un contenedor Rust/Haskell/InsertYourLanguage alrededor del HCS, deje un comentario.
Para un análisis más profundo de HCS, vea Presentación de DockerCon de John Stark.
containerd/cri
Importante
La compatibilidad con CRI solo está disponible en Windows Server 2019/Windows 10 1809 y versiones posteriores.
Aunque las especificaciones de OCI definen un único contenedor, CRI (interfaz en tiempo de ejecución de contenedor) describe los contenedores como cargas de trabajo en un espacio compartido llamado pod. Los pods pueden contener una o más cargas de trabajo de contenedor. Los pods permiten a los orquestadores de contenedores, como Kubernetes y Service Fabric Mesh, controlar las cargas de trabajo agrupadas que deben estar en el mismo host con algunos recursos compartidos, como memoria y vNET.
Aunque runHCS y containerd pueden administrarse en cualquier sistema Windows Server 2016 o posterior, el soporte de Pods (grupos de contenedores) requirió cambios significativos en las herramientas de contenedores en Windows. La compatibilidad con CRI está disponible en Windows Server 2019/Windows 10 1809 y versiones posteriores.