Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O MXC ajuda a gerir a complexidade da utilização de contentores: utiliza-se o MXC para descrever uma política e gerir o ciclo de vida de um contentor, mas o backend de isolamento selecionado faz a aplicação efetiva. Cada backend é construído sobre um mecanismo de sistema operativo diferente. Como resultado, os backends diferem na forma como isolam uma carga de trabalho e na forma como lidam com ficheiros, rede, interface e ciclo de vida.
Começa pelo que a tua carga de trabalho precisa e depois confirma que um backend pode entregá-lo nos hosts que pretendes. Só o nome ou a versão do sistema operativo não indicam se um backend é suportado.
Compreender os ambientes de host e carga de trabalho
Num pedido, pode pedir um tipo de ambiente, chamado intent de containment, ou pode nomear um backend específico. A process intenção mapeia para o backend nativo de isolamento de processos no host onde estás a correr. Como esse backend difere consoante o sistema operativo, a mesma intenção pode dar-te capacidades diferentes no Windows, Linux e macOS.
| Host | Backend do processo predefinido | Outros ambientes |
|---|---|---|
| Windows | ProcessContainer | Uma sessão Windows separada, uma VM Windows ou cargas de trabalho Linux através do WSLc, quando suportado |
| Linux | Plástico bolha | Backends de virtualização LXC e especializados, quando suportados |
| macOS | Cinto de segurança | Verifique a release que instala para outras opções suportadas |
A workload não tem de ser executada no mesmo sistema operativo que o anfitrião. Por exemplo, o WSLc executa uma carga de trabalho Linux num host Windows. Tem os seus próprios pré-requisitos e partilha recursos com o anfitrião de forma diferente de um sandbox de processos do Windows.
Verifique o estado do lançamento e a cobertura do SDK
O suporte do backend muda de versão para versão, por isso verifica a informação de suporte da versão do pacote que instalas.
No MXC v1.0.0, os SDKs V1 podem criar containers com estes backends:
- Windows: ProcessContainer, IsolationSession e WSLc
- Linux: Bubblewrap e LXC
- macOS: Seatbelt
Windows Sandbox, MicroVM e Hyperlight são experimentais. Exigem autorização experimental explícita, e não se podem criar através das APIs do SDK V1. Se estiveres a considerar um destes ou outro ambiente especializado, consulta primeiro as notas de lançamento da tua versão.
Um backend disponível no host pode ainda não suportar a operação SDK que planeias invocar. Nos SDKs V1:
- As APIs do ciclo de vida funcionam apenas com o IsolationSession e o WSLc.
- A execução one-shot PTY funciona com IsolationSession, Bubblewrap, LXC e Seatbelt.
- A execução do PTY num contentor existente funciona apenas com o IsolationSession.
Para detalhes, consulte as referências do SDK:
- Escolha uma operação de arranque do .NET
- Escolha um tipo de operação de arranque do TypeScript
- Escolha uma operação de lançamento Rust
- Ciclo de vida dos contentores MXC
Se usares Rust, o suporte ao backend também depende das funcionalidades do crate que ativas. Para usar o IsolationSession ou WSLc, ative a funcionalidade isolation_session ou wslc da crate mxc-sdk. Para mais informações, consulte o guia do Rust SDK.
Comece com a descoberta em tempo de execução
Cada SDK pode dizer-te o que o host atual suporta antes de lançares qualquer coisa. Executa estas verificações primeiro, mas continua a lidar com erros de lançamento também, porque a configuração do host pode mudar entre a verificação e o lançamento.
Utilize o suporte da plataforma para descobrir se é sequer possível lançar contentores, os backends disponíveis para uma visão mais ampla do anfitrião e a sonda para testar uma requisição específica no Windows antes de a executar.
| SDK | API de descoberta | O que deve verificar |
|---|---|---|
| .NET | MxcPlatform.GetPlatformSupport() |
IsSupported, Reason e AvailableMethods, que apresentam a lista dos backends que o SDK pode iniciar |
| .NET | MxcPlatform.GetAvailableBackends() |
Disponibilidade do host, capacidades opcionais e avisos. Algumas APIs de execução não conseguem usar todos os backends aqui listados. |
| .NET | MxcContainer.Probe() |
No Windows, a camada de isolamento ProcessContainer que o pedido receberia, bem como diagnósticos de compatibilidade específicos do pedido, sem criar um contentor |
| TypeScript | getPlatformSupport() |
isSupported, reason, availableMethods, e quaisquer avisos e campos de capacidade específicos do host |
| TypeScript | getAvailableBackends() |
Disponibilidade do host, capacidades opcionais e avisos. Algumas APIs de execução não conseguem usar todos os backends aqui listados. |
| TypeScript | probe() |
No Windows, o pedido receberia a camada de isolamento ProcessContainer e diagnósticos de compatibilidade específicos do pedido, sem criar um contentor |
| Ferrugem | v1::platform_support() |
is_supported, reason, available_methods, e, no Linux, capacidade de rede Bubblewrap |
| Ferrugem | v1::available_backends() |
Disponibilidade do anfitrião, capacidades opcionais e avisos. Algumas APIs de execução não conseguem usar todos os backends aqui listados. |
| Ferrugem | v1::probe() |
No Windows, o pedido obteria a camada de isolamento ProcessContainer e diagnósticos de compatibilidade específicos do pedido, sem criar um contentor |
Campos que não se aplicam ou que não podem ser detetados podem estar em falta nos resultados. O Discovery é uma primeira verificação útil, mas não valida toda a sua política. Para ter a certeza, crie o pedido que planeia executar e confirme que o backend selecionado pode aplicar todos os controlos necessários.
Alguns hosts precisam de componentes adicionais ou de uma configuração de administrador antes de funcionar um backend. Os resultados de descoberta e erros de lançamento podem indicar o que falta, mas isso não dá permissão à tua aplicação ou a um agente de codificação para mudar o host. Pede à pessoa responsável pelo host para seguir os passos de configuração documentados pelo backend.
Para Windows, veja suporte a políticas de versões do sistema operativo. Uma versão para Windows pode ser suportada pelo MXC e ainda assim não ter uma funcionalidade de política específica, por isso verifique ambos os aspetos.
Verifique as restrições de que a sua carga de trabalho necessita
Dois backends podem aceitar a mesma sintaxe da política e ainda assim aplicá-la de forma diferente. Antes de decidir por um backend, considere áreas como:
| Area | Perguntas a fazer |
|---|---|
| Ficheiros | O backend consegue expressar as permissões de leitura, escrita e negação de que precisas, incluindo as sobrepostas? Partilha ficheiros com o anfitrião, monta-os ou copia-os? |
| Network | Pode impor o seu modelo de rede, seja diretamente ou através de um proxy, incluindo regras de rede privada e de loopback do anfitrião? |
| IU | Pode aplicar as restrições da janela, da área de transferência e de entrada de que precisa? |
| Lifecycle | Executa cada comando de forma independente ou consegue manter o ambiente entre comandos? O que é mantido após uma paragem? |
| Modo de Aprendizagem | O host suporta a captura de bloqueios do ProcessContainer? Se não, que fluxo de trabalho de diagnóstico oferece o backend? |
Os guias MXC no GitHub listam as capacidades suportadas, builds do sistema operativo e requisitos para cada backend.
Escolha um backend dentro das suas necessidades
Antes de escolher um backend, escreva:
- Os sistemas operativos anfitriões e as arquiteturas de processadores que a sua aplicação suporta.
- O ambiente convidado ou de ferramentas de que a carga de trabalho precisa.
- O acesso ao ficheiro, à rede, à interface, ao dispositivo e à ferramenta anfitriã de que a carga de trabalho necessita.
- Se cada comando corre sozinho ou precisa de estado de comandos anteriores.
- Os seus limites de tempo de arranque, recursos, implementação e interação com o utilizador.
- Quão forte é o limite de isolamento que a carga de trabalho e os seus dados exigem.
- Se o backend consegue fazer cumprir todos os controlos de política necessários.
Depois testa todas as configurações de host que suportas, com testes positivos e negativos. Um lançamento bem-sucedido mostra apenas que a MXC aceitou a configuração. Testes negativos, como uma tentativa de escrever fora dos caminhos concedidos, mostram se as restrições realmente se mantêm.
Conteúdo relacionado
Windows developer