Kullanmış olduğumuz yerel makineye SQL Server kurmadan ve çeşitli kısıtlamalara maruz kalmadan (işletim sisteminin zorunlulukları, yan ürünlerin kurulma zorunlulukları vb..) sanal olarak Docker üzerinden SQL Server'ı ayağa kaldıralım.
Docker, konteyner (container) adı verilen açık kaynak kodlu bir sanallaştırma teknolojisidir.
Docker, Docker Engine üzerinden işletim sistemine erişim sağlar ve sistem araçlarını paylaşımlı bir şekilde kullanır.
Docker Container; birbirinden bağımsız olarak çalıştırılan işlemlerin her birine verilen isimdir. Her bir konteyner kendi dosya sistemine, ağ bağlantılarına ve süreçlerine sahiptir.
Docker Image; konteynerlara kurulacak uygulamaların imaj dosyalarıdır. İmajlar, konteynerlerin nasıl çalışacaklarını belirler.
Docker Imaj listesinden MsSql, PostgreSql, Redis gibi pek çok uygulama kullanılabilir.
Kurulum aşamalarına geçelim.
Neden Docker?
- İşletim sistemlerinin farklılığından kaynaklanan sorunları giderir. Versiyon farkı sorunlarını ortadan kaldırır.
- Az kaynak kullanarak çok fazla iş yapar.
- Uygulamaların ölçeklenmesini kolaylaştırır. Docker konteynerları, özellikle e-ticaret siteleri gibi işlem yoğunluğu yüksek uygulamalarda yük artışlarına esnek bir şekilde yanıt verebilir.
- Sunucu maliyetini azaltır. Birden fazla konteyner aynı donanım üzerinde çalışabilir.Bu da hem donanım maliyetlerini düşürür hem de daha fazla uygulamanın aynı sunucu üzerinde çalışmasına olanak tanır.
- Uygulamaların kurulumunu basitleştirir.
- Docker konteynerları, hızlı bir şekilde dağıtılabilir ve çalıştırılabilir. Böylece, yazılım geliştirme süreçlerini hızlandırır ve hızlı bir şekilde yeni özelliklerin veya güncellemelerin kullanıma sunulmasını sağlar.
- Geliştiricilerin kendi ortamında sorunsuz bir şekilde çalışmasını sağlar ve hataların ortam farklılıklarından kaynaklanmasını önler.
Docker Desktop’u Kuralım
Docker resmi sitesinden sisteminize uygun sürümü indirin. Kurulumdan sonra bilgisayarı yeniden başlatın ve Docker’ın çalıştığını doğrulayın.
Docker yüklendikten sonraki işlemleri terminalden (PowerShell, CMD vb...) yapacağız.
SQL Server İmajını İndirelim
docker pull mcr.microsoft.com/mssql/server:2022-latest
Farklı sürüm kurmak istiyorsanız
2019-latest,
2017-latest gibi etiketleri kullanabilirsiniz.
SQL Server İmajı Terminal Kodu
Terminalden indirmiş olduğumuz SQL Server imajını Docker üzerinde görüntüleyelim
SQL Server İmajı Docker'da Görüntüleyelim
SQL Server'ı Docker üzerinde indirme işlemi tamamlandı. Şimdi ise SQL Server'ı kullanıcı ad ve şifre girecek şeklinde başlatalım.
SQL Server Konteyneri Başlatın
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=Guclu1Sifre" -p 1433:1433 --name sql_server_container -d mcr.microsoft.com/mssql/server:2022-latest
SQL Server Konteyneri Başlatın
SQL Server Konteyneri Docker'da Görüntüle
Yükleme işlemi için terminale yazdığımız bu komutun her bir parçacağının ne anlama geldiğini öğrenmek için aşağıdaki tablomuzu inceleyelim.
-e "ACCEPT_EULA=Y" : Son kullanıcı lisans sözleşmesini kabul eder (Zorunludur).
-e "MSSQL_SA_PASSWORD=...": sa(Sistem Yöneticisi) kullanıcısı için şifre belirler.
-p 1433:1433 : Bilgisayarınızın 1433 portunu konteynerin 1433 portuna bağlar.
--name sql_server_container : Konteynıra sizin belirlediğiniz bir isim verir.
-d : Konteynerin arka planda (detached) çalışmasını sağlar.
Hata alırsanız terminale şunu yazıp hataları inceleyebilirsiniz:
docker logs sql_server_container
SQL Server şifreniz şu kriterlere uymalıdır, aksi takdirde konteyner başlar ancak SQL servisi kendi içinde çöker:
- En az 8 karakter.
- Şu 4 gruptan en az 3'ünü içermeli: Büyük harf, Küçük harf, Rakam, Sembol.
- Örnek Şifre: Docker_Sql_2026!
SQL Server Management Studio ile Docker Container'a Bağlanmaya Çalışalım
1) SSMS’i açın
2) Server name: 127.0.0.1,1433
3) Login: sa
4) Password: Guclu1Sifre
SQL Server'a Bağlanalım
Bağlantı sağlandı, artık SQL Server'ı kullanabilirsiniz.
SQL Server Silinse Bile Verilerimiz Silinmesin
Peki, container silinirse içerisindeki veriler ne olur? Tabii ki veriler de silinir. Bunu önlemek için
Volume yapısını kullanmaya çalışalım. Yani SQL Server kurulumunda volume ekleyerek verilerimizin silinmesini bir nebze de olsa engellemeye çalışacağız.
SQL Server Volume Oluşturalımdocker volume create sql_server_volume
SQL Server Volume Oluşturalım
SQL Server Volume Oluşturalım

Oluşturduğumuz bu volume ile container başlatalım.
SQL Server Volume ile Container Başlatalım
docker run -d --name sql_server_container -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=Guclu1Sifre" -p 1433:1433 -v sql_server_volume:/var/opt/mssql mcr.microsoft.com/mssql/server:2022-latest
Artık veritabanı dosyaları
sql_server_volume adlı volume içerisinde saklanmış olacaktır.
Ayrıca işinize yarayabilecek basit ve kullanışlı Docker komutlarını not edelim.
Kullanışlı Docker Komutları
docker ps: Çalışan konteynerleri listeler
docker stop sql_server_container: Konteyneri durdurur
docker start sql_server_container: Konteyneri başlatır
docker rm sql_server_container: Konteyneri siler (volume silinmez)
Kaynak:
Docker ile SQL Server Kurulumu