Tüm Yazılar

Windows Server 2016 Üzerinde Docker Engine (CLI) Kurulumu

Bu doküman, Windows Server 2016 üzerinde Docker Engine kurmak ve çalıştırmak isteyenler için hazırlanmıştır. İşlemler PowerShell kullanılarak yapılacaktır. Yönetici olarak çalıştırmayı unutmayın.

Modern Docker sürümleri (20+, 23+, 29+), Windows Server 2016'yı resmî olarak desteklemez. Bu nedenle, bu ortamda yalnızca Docker Enterprise Edition 17.06 gibi eski ancak uyumlu sürümler sorunsuz çalışmaktadır.

1. Adım — Windows Containers Özelliğini Aktif Etme

Install-WindowsFeature containers

Ne İşe Yarar?

Bu komut, Windows Server üzerinde Containers özelliğini etkinleştirir. Docker Engine'in çalışabilmesi için işletim sisteminin container altyapısının aktif olması gerekir.

Neden Gerekli?

  • Windows container izolasyonu için temel bileşenleri yükler.
  • Container oluşturma ve çalıştırma desteğini sisteme ekler.
  • Çoğu zaman yeniden başlatma gerektirir.

Not: Bu adım başarılı olsa bile, değişikliklerin tam olarak devreye girebilmesi için sunucuyu yeniden başlatmak gerekebilir.

2. Adım — Docker EE 17.06 Paketini İndirme

Önce TLS 1.2'yi aktif edin (özellikle SSL/TLS hatası alırsanız):

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

Ardından Docker paketini indirin:

Invoke-WebRequest "https://download.docker.com/components/engine/windows-server/17.06/docker-17.06.2-ee-7.zip" -OutFile docker-17.06.2-ee-7.zip

Ne İşe Yarar?

TLS ayarı, PowerShell'in uzak sunucuya TLS 1.2 ile bağlanmasını zorlar. Eski Windows Server 2016 kurulumlarında varsayılan TLS sürümü düşük olduğundan, bu ayar yapılmazsa "SSL/TLS güvenli kanalı oluşturulamadı" hatası alınabilir.

Ardından gelen Invoke-WebRequest komutu ise Windows Server 2016 ile uyumlu olan Docker Engine 17.06.2-ee-7 paketini zip dosyası olarak indirir.

Neden Bu Sürüm?

  • Windows Server 2016 dönemi için resmî olarak desteklenen Docker EE sürümlerinden biridir.
  • Uzun yıllar üretim ortamlarında kullanılmış, stabil bir sürümdür.
  • Yeni Docker sürümlerinin aksine Windows Server 2016 çekirdeğiyle uyumludur.

3. Adım — Docker Engine'i Program Files Klasörüne Çıkartma

Expand-Archive docker-17.06.2-ee-7.zip -DestinationPath $Env:ProgramFiles -Force

Ne İşe Yarar?

İndirilen zip paketini C:\Program Files\docker klasörüne açar. Bu klasörün içine:

  • docker.exe (Docker CLI — istemci)
  • dockerd.exe (Docker daemon — sunucu)
  • İlgili yardımcı dosyalar

yerleştirilir.

4. Adım — Docker Klasörünü PATH Değişkenine Eklemek

$env:PATH += ";$env:ProgramFiles\docker"
[Environment]::SetEnvironmentVariable("PATH", $env:PATH, [EnvironmentVariableTarget]::Machine)

Ne İşe Yarar?

Bu iki satır, C:\Program Files\docker klasörünü sistem PATH değişkenine ekler.

  • İlk satır, mevcut PowerShell oturumu için PATH'e ekleme yapar.
  • İkinci satır, bu değişikliği sistem genelinde kalıcı hâle getirir.

Neden Gerekli?

Böylece komut satırında:

docker
dockerd

yazdığınızda, Windows bu komutları C:\Program Files\docker klasöründeki docker.exe ve dockerd.exe dosyalarıyla eşleştirir.

Not: PATH değişikliğinin tüm oturumlara yansıması için, gerekirse PowerShell penceresini kapatıp yeniden açabilirsiniz.

5. Adım — Docker Servisini 17.06 dockerd ile Kaydetmek

sc.exe delete docker
& "$Env:ProgramFiles\docker\dockerd.exe" --register-service

Ne İşe Yarar?

  1. Önce eski veya hatalı servis tanımını siler:
sc.exe delete docker

Eğer daha önce bozuk bir Docker servisi tanımlandıysa (yanlış sürüm, yanlış path vb.), bu komut o servis kaydını kaldırır. Servis yoksa hata verse bile kritik değildir.

  1. Sonra doğru daemon ile yeni bir servis oluşturur:
& "$Env:ProgramFiles\docker\dockerd.exe" --register-service

Bu komut, dockerd.exe dosyasını Windows servis yöneticisine tanıtır ve "docker" adlı bir servis olarak kaydeder.

Neden Önemli?

Docker daemon'ın (sunucu kısmı) Windows tarafından bir servis olarak yönetilebilmesi için bu kayıt gereklidir. Servis kaydı doğru yapılmadan Docker Engine tutarlı olarak başlatılamaz.

6. Adım — Docker Servisini Başlatmak

Start-Service docker

Ne İşe Yarar?

Kayıt edilen docker servisini başlatır. Bu servis:

  • dockerd.exe işlemine karşılık gelir.
  • Docker Engine'i arka planda çalışan bir daemon olarak ayağa kaldırır.
  • \\.\pipe\docker_engine adında bir named pipe oluşturur.

Bu adım başarıyla tamamlandığında, Docker Engine artık container çalıştırmaya hazır durumdadır.

7. Adım — Docker Versiyonunu Kontrol Etmek

docker version

Ne Görmeyi Bekleriz?

Komut çıktısında şu bilgilere benzer bir sonuç görülmelidir:

Client:
 Version:      17.06.2-ee-7
 ...

Server:
 Version:      17.06.2-ee-7
 ...

Ne Anlama Gelir?

  • Client kısmı, kullanılan docker.exe sürümünü gösterir.
  • Server kısmı, çalışan Docker daemon'ın (dockerd.exe) sürümünü gösterir.
  • Her iki bölümde de 17.06.2-ee-7 görünmesi, kurulumun doğru ve tutarlı olduğunu gösterir.

8. Adım — Test Container Çalıştırmak

docker run mcr.microsoft.com/windows/servercore:ltsc2016 cmd /c echo Merhaba Docker

Bu Komut Ne Yapar?

  • Önce, yerel sistemde windows/servercore:ltsc2016 imajı yoksa uzaktan indirir.
  • Bu imajdan geçici bir container oluşturur.
  • Container içinde cmd /c echo Merhaba Docker komutunu çalıştırır.
  • Komut çıktısını host ekrana yansıtır.

Çalışma Örneği:

Unable to find image 'mcr.microsoft.com/windows/servercore:ltsc2016' locally
ltsc2016: Pulling from windows/servercore
...
Status: Downloaded newer image for mcr.microsoft.com/windows/servercore:ltsc2016
Merhaba Docker

En sondaki Merhaba Docker satırını görmek, Docker'ın eksiksiz çalıştığının en net kanıtıdır:

  • Daemon ayakta
  • Registry bağlantısı çalışıyor
  • İmaj indirilebiliyor
  • Container oluşturulabiliyor
  • Container içinde komut çalışabiliyor
  • Çıktı host'a geri gelebiliyor

Bu adımlar sonunda, Windows Server 2016 üzerinde Docker Engine 17.06 sürümüyle çalışan, tam fonksiyonel bir Docker ortamına sahip olursunuz.