Compilar e executar um aplicativo com ou sem o .NET Core 2.0 ou o PowerShell Core 6

Nesta versão, a imagem de contêiner do sistema operacional base do Nano Server removeu o .NET Core e o PowerShell, embora ambos sejam aceitos como um contêiner complementar sobreposto no topo do contêiner base do Nano Server.

Para executar código nativo ou estruturas abertas, como Node.js, Python, Ruby, etc, o contêiner base do Nano Server é suficiente. Uma diferença é que determinados códigos nativos talvez não sejam executados como resultado da economia de espaço nesta versão em comparação com o Windows Server 2016. Se houver algum problema de regressão, use os fóruns para nos informar.

Para criar o contêiner a partir de um Dockerfile, use o comando docker build e para executá-lo, use docker run. O comando a seguir baixará a imagem do sistema operacional base do contêiner do Nano Server, o que pode levar alguns minutos, e exibirá uma mensagem "Hello World!" no console do host.

docker run microsoft/nanoserver-insider cmd /c echo Hello World!

Você pode criar aplicativos mais complexos usando Dockerfiles no Windows, com sintaxe do Dockerfile como FROM, RUN, COPY, ADD, CMD, etc. Você não conseguirá executar alguns comandos imediatamente a partir dessa imagem base, mas agora poderá criar imagens de contêiner que incluem apenas o que você precisa para o seu aplicativo funcionar.

Como resultado de o .NET Core e o PowerShell não estarem disponíveis na imagem do sistema operacional base do contêiner do Nano Server, será um desafio criar um contêiner com conteúdo em formato compactado zip. Com o recurso de compilação em vários estágios disponível no Docker 17.05, você pode aproveitar o PowerShell em outro contêiner para descompactar o conteúdo e copiá-lo no contêiner do Nano. Essa abordagem pode ser usada para criar um contêiner do .NET Core e um contêiner do PowerShell.

É possível instalar a imagem de contêiner do PowerShell usando este comando:

docker pull microsoft/nanoserver-insider-powershell

É possível instalar a imagem de contêiner do .NET Core usando este comando:

docker pull microsoft/nanoserver-insider-dotnet

Abaixo estão alguns exemplos de como usamos compilações em vários estágios para criar essas imagens de contêiner.

Implantar aplicativos baseados em .NET Core 2.0

Você pode aproveitar a imagem de contêiner do .NET Core 2.0 na versão Insider para executar seus aplicativos .NET Core, quando seu aplicativo .NET Core tiver sido criado em outro lugar, e você desejar executá-lo no contêiner. Você pode encontrar mais informações sobre como executar um aplicativo .NET Core com as imagens de contêiner do .NET Core no .NET Core GitHub. Se estiver desenvolvendo um aplicativo dentro do contêiner, você deve usar o SDK do .NET Core. Para usuários avançados, você pode criar seu próprio contêiner .NET Core 2.0 com a versão do .NET Core 2.0, Dockerfile e a URL especificada no dotnet-docker-nightly. Para fazer isso, um contêiner do Windows Server Core pode ser usado para realizar o download e a descompactação. O exemplo de Dockerfile é como o .NET Core Runtime Dockerfile.

Com esse Dockerfile, um contêiner do .NET Core 2.0 pode ser criado usando o seguinte comando.

docker build -t nanoserverdnc -f Dockerfile-dotnetRuntime .

Executar o PowerShell Core 6 em um contêiner

Usando o mesmo método de compilação em vários estágios, um contêiner do PowerShell Core 6 pode ser criado com este PowerShell Dockerfile.

Em seguida, execute o docker build para criar a imagem de contêiner do PowerShell.

docker build -t nanoserverPowerShell6 -f Dockerfile-PowerShell6 .

Você pode encontrar mais informações em PowerShell GitHub. O zip do PowerShell contém um subconjunto do .NET Core 2.0 necessário para criar o PowerShell Core 6. Se os seus módulos do PowerShell dependem do .NET Core 2.0, é seguro criar o contêiner do PowerShell no topo do contêiner Nano .NET Core, em vez do contêiner base do Nano, ou seja, usando FROM microsoft/nanoserver-insider-dotnet no Dockerfile.

Próximas etapas

  • Use uma das novas imagens de contêiner baseadas no Nano Server, disponíveis no Docker Hub, ou seja, imagem base do Nano Server, Nano com .NET Core 2.0 e Nano com PowerShell Core 6
  • Criar sua própria imagem de contêiner com base na nova imagem do sistema operacional base do contêiner do Nano Server, usando o conteúdo de amostra do Dockerfile neste guia