Windows Server 2016 ile hayatımıza giren container özelliğinden sizlere biraz bahsetmek ve Windows Server 2019 üzerinde container teknolojisinin öncüsü olan docker kurulumunun nasıl yapacağınızı size anlatmak isterim. Sanallaştırma teknolojisinin ardından gündemimize hızlı bir giriş yapan container mimarisi özelikle yazılımcıların çok kısa sürede vazgeçilmesi olmaya başlamıştır. Aynı işletim sistemi içerisinde aynı kaynakları kullanarak oluşturulan ve ihtiyaç durumunda kaynakların çok rahat azaltılarak yada arttırılabilen bir alt yapıya sahip olan container teknolojisi kendi dosya sistemi, registry ve ağ adreslerine sahip olabildiği için diğer uygulamalardan da izole bir şekilde çalışma imkanı sunmaktadır. Esnek kullanım yapısı ile uygulama geliştiricilerin tercih sebebi olmuştur. Peki bu container role kurulumu nasıl yapılır sunucuda nasıl aktif edilir birlikte bakalım. Container role kurulumunu docker ile eş zamanlı sizlere anlatmaya çalışacağım.



Docker EE Kurulumu

Modul kurulumu için "Install-Module" komutu ile kuruluma başlıyoruz.
Install-Module DockerMsftProvider -Force

PS C:\Users\Administrator> Install-Module DockerMsftProvider -Force
 
NuGet provider is required to continue
PowerShellGet requires NuGet provider version '2.8.5.201' or newer to interact with
NuGet-based repositories. The NuGet provider must be available in 'C:\Program
Files\PackageManagement\ProviderAssemblies' or
'C:\Users\Administrator\AppData\Local\PackageManagement\ProviderAssemblies'. You can
also install the NuGet provider by running 'Install-PackageProvider -Name NuGet
-MinimumVersion 2.8.5.201 -Force'. Do you want PowerShellGet to install and import the
NuGet provider now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):Y

Docker paketlerini yüklemek için "Install-Package" komutunu kullanıyoruz.
Install-Package Docker -ProviderName DockerMsftProvider -Force

PS C:\Users\Administrator> Install-Package Docker -ProviderName DockerMsftProvider -Force
WARNING: A restart is required to enable the containers feature. Please restart your machine.
 
Name                           Version          Source           Summary
----                           -------          ------           -------
Docker                         18.09.4          DockerDefault    Contains Docker EE ...


PS C:\Users\Administrator> docker container run hello-world:nanoserver
Unable to find image 'hello-world:nanoserver' locally
nanoserver: Pulling from library/hello-world
6a5e981230da: Pull complete
dc4b656f6979: Pull complete
2848c5402b33: Pull complete
9e0171b11ac8: Pull complete
Digest: sha256:ea56d430e69850b80cd4969b2cbb891db83890c7bb79f29ae81f3d0b47a58dd9
Status: Downloaded newer image for hello-world:nanoserver
 
Hello from Docker!
This message shows that your installation appears to be working correctly.
 
To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (windows-amd64, nanoserver-1809)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.
 
To try something more ambitious, you can run a Windows Server container with:
 PS C:\> docker run -it mcr.microsoft.com/windows/servercore powershell
 
Share images, automate workflows, and more with a free Docker ID:
 
For more examples and ideas, visit:

Script kullanarak Docker EE Kurulumu

Docker kurulumunu Windows Core üzerinde yapacaksanız özelikle size çok faydalı olacak aşağıdaki komutları kullanabilirsiniz. Öncesinde Docker.com üzerinden ilgili paketlerimizi indiriyoruz.

PS C:\Users\Administrator> invoke-webrequest -UseBasicparsing -Outfile docker-17.06.2-ee-7.zip https://download.docker.com/components/engine/windows-server/17.06/docker-17.06.2-ee-7.zip

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
 
 Writing web request
    Writing request stream... (Number of bytes written: 8431026)

İndirdiğimiz zip dosyasını açarak iligli dizine kaydetmek için aşağıdaki komutumuzu kullanıyoruz.
PS C:\Users\Administrator> Expand-Archive docker-17.06.2-ee-7.zip -DestinationPath $Env: ProgramFiles

İndirdiğimiz zip dosyasını silmek için 
PS C:\Users\Administrator> Remove-Item -Force docker-17.06.2-ee-7.zip

Container role yüklemek için

PS C:\Users\Administrator> $null = Install-WindowsFeature containers

Yükleniyor...
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
 
 Start Installation...
    26%
    [ooooooooooooooooooo                                                         ]
 
 
PS C:\Users\Administrator>
PS C:\Users\Administrator> $null = Install-WindowsFeature containers

Yükleme tamamlandı. Sistemi yeninden başlatmanız gerekiyor.
PS C:\Users\Administrator> $null = Install-WindowsFeature containers
WARNING: You must restart this server to finish the installation process.

Sistemi yeniden başlattıktan sonra docker servislerini çalıştırıyoruz.

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
 
PS C:\Users\Administrator> $env:path += ";$env:ProgramFiles\docker"
PS C:\Users\Administrator>
PS C:\Users\Administrator> dockerd --register-service
PS C:\Users\Administrator>
PS C:\Users\Administrator> Start-Service docker
PS C:\Users\Administrator>

Son olarak docker çalıştırıyoruz.

PS C:\Users\Administrator> docker container run hello-world:nanoserver
Unable to find image 'hello-world:nanoserver' locally
nanoserver: Pulling from library/hello-world
6a5e981230da: Pull complete
dc4b656f6979: Pull complete
2848c5402b33: Pull complete
9e0171b11ac8: Pull complete
Digest: sha256:ea56d430e69850b80cd4969b2cbb891db83890c7bb79f29ae81f3d0b47a58dd9
Status: Downloaded newer image for hello-world:nanoserver
 
Hello from Docker!
This message shows that your installation appears to be working correctly.
 
To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (windows-amd64, nanoserver-1809)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.
 
To try something more ambitious, you can run a Windows Server container with:
 PS C:\> docker run -it mcr.microsoft.com/windows/servercore powershell
 
Share images, automate workflows, and more with a free Docker ID:
 
For more examples and ideas, visit:

Kaynak: docker.com