Ola Pessoal,
Neste post vou mostrar como instalar e preparar uma maquina windows rodar um windows container.
Entretanto, não iremos utilizar o Docker. Nos iremos utilizar um combo com ContainerD, Nerdctl e CNI com windows container networking.
No primeiro momento, você vai pensar, Leandro por que você esta fazendo essa mistura com muitas soluções para poder rodar um container no windows?
Primeiro, a Microsoft ao poucos esta se desvinculando do Docker para rodar containers e depois que o Docker foi comprado pela Mirantis, a Microsoft começou a foca no containerD para seus produtos.
No presente momento, enquanto estou escrevendo isso em 2023, não foi disponibilidade uma forma oficial de instalar o containerd no Windows como um instalador ou usando alguma fonte de repositório como winget ou chocolatey.
Com isso, decide, criar esse scrip para fazer a instalacao e configuração para sua operação básica.
Nerdctl: Software para gerenciar os container que irão rodar no containerD
WCN (windows container networking): Sofware responsável pela conectividade de rede, conhecido como CNI.
Versões utilizadas para testar o script, que foram utilizadas em 2023:
Nerdctl: 1.4.0
ContainerD: 1.7.2
WCN: 0.3.0
Windows Server: 2022 com atualizações de junho de 2023 instaladas.
PowerShell: 5.1
Powershell Module: HNS
Neste post, irei explicar o que o script faz, e que vai além do que os scritps disponibilizados pela Microsoft e ContainerD não faz.
0- Baixar os script: curl.exe -LO https://raw.githubusercontent.com/leandroscardua/Windows-Containerd/master/install_containerd.ps1 , para executar roda o script com esse comando: .\install_containerd.ps1
1- O script abaixo, verifica as ultimas versões disponíveis, do nerdctl, containerd e windows container networking, se você quiser você pode selecionar uma versão especifica para cada um deste componentes.
2- Verificar se a função container esta instalada, se não, a execução do script sera interrompida, sendo necessário manualmente rodar o comando: Install-WindowsFeature -Name Containers
3- O script ira baixar a versao do containerD e ire executa algumas funcoes para instalar e configurar o containerD corretamente, isso vai executar essa mesma funcoes para o Nerdctl e windows container networking.
4- Para parte de rede, como temos que escolher um CNI compatível com windows, vamos utilizar o windows container networking, que e compatível com nerdctl e containerD, isso vai baixar um module me Powershell para poder adicionar um rede virtual dentro do windows, para criar um adaptador para funcionar em modo NAT, no momento o único suportado.
5- Com isso, se ambiente esta pronto para utilizar o containerD, voce ja pode baixar as imagens rodando por exemplo: ./nerdctl.exe pull mcr.microsoft.com/windows/nanoserver:ltsc2022 e para criar o container com a imagem que voce criou conectado na rede virtual criada anteriormente rode o comando: ./nerdctl.exe run -it –net nat mcr.microsoft.com/windows/nanoserver:ltsc2022
Fica a vontade, para usar o script abaixo e se tiver duvidas ou sugestões, pode abrir um issue no github.
[embedGitHubContent owner=”leandroscardua” repo=”Windows-Containerd” path=”install_containerd.ps1″]
Referencias:
– https://learn.microsoft.com/en-us/virtualization/windowscontainers/quick-start/set-up-environment?tabs=containerd#install-the-container-runtime
– https://github.com/containerd/containerd/blob/main/docs/getting-started.md#installing-containerd-on-windows
– https://blog.devgenius.io/gentle-containerd-on-windows-guide-for-you-50d4a46daccf
– https://lippertmarkus.com/2022/01/22/containerd-ctr-windows/