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?
- Ö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.
- 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.exeişlemine karşılık gelir.- Docker Engine'i arka planda çalışan bir daemon olarak ayağa kaldırır.
\\.\pipe\docker_engineadı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.exesü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-7gö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:ltsc2016imajı yoksa uzaktan indirir. - Bu imajdan geçici bir container oluşturur.
- Container içinde
cmd /c echo Merhaba Dockerkomutunu ç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.