Pular para o conteúdo

Instalando ContainerD no Windows Server 2019/2022

  • por

Ola Pessoal,

Neste post, irei mostrar como instalar o containerD no Windows Server, esse script pode ser utilizado para instalar o ContainerD server 2019 e 2022.
A Microsoft esta aos poucos movendo-se para incluir e suportar o uso do ContainerD como Windows Container Runtime como padrão para suas aplicações, veja esse link para maiores esclarecimentos.
Além, suporte ao HostProcess para Windows container sendo esse somente suportado pelo ContainerD, veja esse link para maiores detalhes.

Desde de que a Mirantis comprou o docker no final de 2019, a Microsoft vem investindo cada vez mais na comunidade e suportando o ContainerD dentro do seu ecossistema.

Softwares que serão utilizados e as versões utilizadas:

– Windows Server – link ( versão:  2019/2022 )
– ContainerD – Link ( versão:  1.6.4 )
– Script/Aplicativo – Link ( Agradecimentos ao https://lippertmarkus.com/ )

Agora, nos podemos começar a verificação por atualizações

1- Rode o comando abaixo, para baixar o script/applicativo para automatizar a instalação.

curl.exe -LO https://raw.githubusercontent.com/leandroscardua/Windows-Containerd/master/Install_exe.ps1 ; ./install_exe.ps1 ;  cd $Env:ProgramFiles\containerd

PS C:\Users\Administrator> curl.exe -LO https://raw.githubusercontent.com/leandroscardua/Windows-Containerd/master/Install_exe.ps1 ; ./install_exe.ps1 ;  cd “$Env:ProgramFiles\containerd”
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1237 100 1237 0 0 1237 0 0:00:01 –:–:– 0:00:01 11348
Checking the latest version of ContainerD installer
Downloading latest ContainerD installer
Installing ContainerD and Windows CNI
time=”2022-05-19T13:33:30-04:00″ level=debug msg=”Checking for admin privileges”
time=”2022-05-19T13:33:30-04:00″ level=debug msg=”Enabling Windows features: Containers, Microsoft-Hyper-V, Microsoft-Hyper-V-Management-PowerShell”
ERROR: Logging before logger.Init.
WARN : 2022/05/19 13:33:35.381623 dism.go:172: Closing session before reloading failed: Incorrect function.
ERROR: Logging before logger.Init.
INFO : 2022/05/19 13:33:35.597584 dism.go:178: Reloaded image session as requested by DISM API
time=”2022-05-19T13:33:35-04:00″ level=debug msg=”Downloading from https://github.com/containerd/containerd/releases/download/v1.6.4/containerd-1.6.4-windows-amd64.tar.gz”
2022/05/19 13:33:35 [DEBUG] GET https://github.com/containerd/containerd/releases/download/v1.6.4/containerd-1.6.4-windows-amd64.tar.gz
time=”2022-05-19T13:33:35-04:00″ level=debug msg=”Downloading from https://github.com/microsoft/windows-container-networking/releases/download/v0.3.0/windows-container-networking-cni-amd64-v0.3.0.zip”
2022/05/19 13:33:35 [DEBUG] GET https://github.com/microsoft/windows-container-networking/releases/download/v0.3.0/windows-container-networking-cni-amd64-v0.3.0.zip
time=”2022-05-19T13:33:39-04:00″ level=debug msg=”Check for existing HNS NAT network”
time=”2022-05-19T13:33:39-04:00″ level=debug msg=”[GET]=>[/networks/] Request : “
time=”2022-05-19T13:33:39-04:00″ level=debug msg=”Network Response : []”
time=”2022-05-19T13:33:39-04:00″ level=debug msg=”No existing NAT network can be retrieved, creating a new one”
time=”2022-05-19T13:33:39-04:00″ level=debug msg=”[POST]=>[/networks/] Request : {\”Name\”:\”nat\”,\”Type\”:\”nat\”}”

time=”2022-05-19T13:33:41-04:00″ level=debug msg=”Network Response : {\”ActivityId
time=”2022-05-19T13:33:41-04:00″ level=debug msg=”Creating CNI config for NAT network”
time=”2022-05-19T13:33:41-04:00″ level=debug msg=”Creating symlinks to CNI binaries and configs for ctr to work”
time=”2022-05-19T13:33:45-04:00″ level=debug msg=”Creating containerd config”
time=”2022-05-19T13:33:45-04:00″ level=debug msg=”Creating containerd service and starting it”
time=”2022-05-19T13:33:46-04:00″ level=debug msg=”Installation finished”
PS C:\Program Files\containerd>

O script ira verificar a ultima versao do ContainerD, Windows CNI e do aplicativo para instalar isso e usar esse informação para baixar e instalar suas respectivas versões, se não tiver  as funções Containers, Hyper-V, Hyper-PowerShell , ja instalada o aplicativa ira instalar automaticamente e pedir para reiniciar, sera necessário rodar novamente a pois o restart.

2- Execute o comando para baixar uma imagem usando o comando ctr.exe

.\crt.exe i pull mcr.microsoft.com/windows/nanoserver:ltsc2022

PS C:\Program Files\containerd> .\ctr.exe i pull mcr.microsoft.com/windows/nanoserver:ltsc2022
mcr.microsoft.com/windows/nanoserver:ltsc2022: resolved |++++++++++++++++++++++++++++++++++++++|
index-sha256:fb16d42712f3599c849723d365a7ddc5fb95e8bf1674d97e9f9cbcb726e7525d: done |++++++++++++++++++++++++++++++++++++++|
manifest-sha256:3e35dd56e0a97b55fdbc08b870d86f47fc8a8a921eac15b9966a2fa6b3320942: waiting |————————————–|
layer-sha256:6626f490e738e10ea5e31ff2643e3a8c372e076d9030c77fac37537dbf12b73c: downloading |+++———————————–| 9.0 MiB/98.4 MiB
config-sha256:2d573504a4f6b5bedc7151635c99c2db2cd56aadde0c23022b36d8feaed59b94: done |++++++++++++++++++++++++++++++++++++++|
elapsed: 3.4 s
elapsed: 25.7s total: 98.4 M (3.8 MiB/s)
unpacking windows/amd64 sha256:fb16d42712f3599c849723d365a7ddc5fb95e8bf1674d97e9f9cbcb726e7525d…
done: 14.1910922s
PS C:\Program Files\containerd>

Se você estiver usando o windows server 2019, mude o final do comando para :1809, neste exemplo nos estamos usando o windows server 2022 como base.

3- Rode o comando abaixo, para rodar nossa imagem baixada como uma container.

.\ctr.exe run –cni  -d mcr.microsoft.com/windows/nanoserver:ltsc2022 winsrv cmd

PS C:\Program Files\containerd> .\ctr.exe run –cni -rm -t mcr.microsoft.com/windows/nanoserver:ltsc2022 winsrv cmd
Microsoft Windows [Version 10.0.20348.707]
(c) 2020 Microsoft Corporation. All rights reserved.

C:\Windows\system32>

Neste comando nos vamos rodar a image usando o CNI configurado no containerD (–cni),usando a funcao (-d) o container irea rodar em segundo plano,usando a image do nano server (mcr.microsoft.com/windows/nanoserver:ltsc2022) com nome (winsrv), e vamos abrir o (cmd) para executar alguns co\mandos,
Lembrando, se você estiver usando a windows server 2019, troque a imagem que sera utilizada conforme o sistema operacional. como vimos no passo anterior.

4- Execute alguns comandos de teste para verificar a conectividade do container com a internet.

ping 8.8.8.8

C:\Windows\system32>ping 8.8.8.8

Pinging 8.8.8.8 with 32 bytes of data:
Reply from 8.8.8.8: bytes=32 time=24ms TTL=108
Reply from 8.8.8.8: bytes=32 time=30ms TTL=108
Reply from 8.8.8.8: bytes=32 time=21ms TTL=108
Reply from 8.8.8.8: bytes=32 time=24ms TTL=108

Ping statistics for 8.8.8.8:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 21ms, Maximum = 30ms, Average = 24ms

C:\Windows\system32>


5- Execute o comando exit, para fechar a sessão.

exit

exit

Infelizmente, neste implementação ainda n é possível utilizar o ContainerD como utilizamos o Docker CLI, o time do ContainerD, já esta trabalhando para solucionar esse problema utilizando nerdclt, somente algumas funções estão prontas para windows.

Com isso concluímos o nosso post de como instalar atualizações no FreeBSD.

Fontes:

– https://github.com/containerd/containerd
– https://github.com/containerd/nerdctl#command-reference
– https://github.com/lippertmarkus/containerd-installer






Deixe uma resposta