Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:Linux üzerinde SQL Server
Bu makalede, SQL Server Docker kapsayıcılarını dağıtırken ve kullanırken görülen yaygın hatalar anlatılır ve sorunu çözmeye yardımcı olacak sorun giderme teknikleri sağlanır.
Docker komut hataları
Herhangi bir docker komut için hata alırsanız docker hizmetinin çalıştığından emin olun ve yükseltilmiş izinlerle çalıştırmayı deneyin.
Örneğin, Linux'ta komutları çalıştırırken docker aşağıdaki hatayı alabilirsiniz:
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
Linux'ta bu hatayı alırsanız, aynı komutları başına sudo ekleyerek çalıştırmayı deneyin. Bu başarısız olursa docker hizmetinin çalıştığını doğrulayın ve gerekirse başlatın.
sudo systemctl status docker
sudo systemctl start docker
Windows'da, PowerShell'i veya komut isteminizi Yönetici olarak başlattığınızı doğrulayın.
Important
SA_PASSWORD ortam değişkeni kullanım dışıdır. Bunun yerine MSSQL_SA_PASSWORD kullanın.
SQL Server kapsayıcı başlatma hataları
SQL Server kapsayıcısı çalıştırılamazsa aşağıdaki testleri deneyin:
gibi
failed to create endpoint CONTAINER_NAME on network bridge. Error starting proxy: listen tcp 0.0.0.0:1433 bind: address already in use.bir hata alırsanız, 1433 numaralı kapsayıcı bağlantı noktasını zaten kullanımda olan bir bağlantı noktasına eşlemeye çalışıyorsunuz demektir. Sql Server'ı konak makinede yerel olarak çalıştırıyorsanız bu durum oluşabilir. İki SQL Server kapsayıcısı başlatır ve her ikisini de aynı konak bağlantı noktasına eşlemeye çalışırsanız bu da olabilir. Bu durumda, kapsayıcı bağlantı noktası 1433'ü farklı bir ana bilgisayar bağlantı noktasına eşlemek için-pparametresini kullanın. Örneğin:docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1400:1433 -d mcr.microsoft.com/mssql/server:2017-latest`.docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2017-latest`.docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2017-latest`.docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1400:1433 -d mcr.microsoft.com/mssql/server:2019-latest`.docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2019-latest`.docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2019-latest`.docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1400:1433 -d mcr.microsoft.com/mssql/server:2022-latest`.docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2022-latest`.docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2022-latest`.docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1400:1433 -d mcr.microsoft.com/mssql/server:2025-latest`.docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2025-latest`.docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2025-latest`.Caution
Parolanız varsayılan SQL Server password ilkesini izlemelidir. Varsayılan olarak, parola en az sekiz karakter uzunluğunda olmalı ve şu dört kümeden üçünün karakterlerini içermelidir: büyük harfler, küçük harfler, 10 tabanındaki basamaklar ve simgeler. Parolalar en çok 128 karakter uzunluğunda olabilir. Mümkün olduğunca uzun ve karmaşık parolalar kullanın.
Kapsayıcı başlatmaya çalışırken gibi
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.30tdout=1&tail=all: dial unix /var/run/docker.sock: connect: permission deniedbir hata alırsanız, kullanıcınızı Ubuntu'daki docker grubuna ekleyin. Ardından bu değişiklik yeni oturumları etkileyeceği için oturumu kapatın ve yeniden oturum açın.usermod -aG docker $USERKapsayıcıdan hata iletileri olup olmadığını denetleyin.
docker logs e69e056c702dHızlı başlangıç makalesinin önkoşullar bölümünde belirtilen en düşük bellek ve disk gereksinimlerini karşıladığınızdan emin olun.
Herhangi bir kapsayıcı yönetimi yazılımı kullanıyorsanız kök olarak çalışan kapsayıcı işlemlerini desteklediğine emin olun. Kapsayıcıdaki sqlservr işlemi root kullanıcısı olarak çalışır.
SQL Server Docker kapsayıcınız başladıktan hemen sonra kapanırsa, docker loglarınızı kontrol edin. Windows üzerinde PowerShell'i komutuyla
docker runkullanıyorsanız, tek tırnak yerine çift tırnak kullanın. PowerShell Core ile tek tırnak işareti kullanın.SQL Server kurulumunu ve hata günlüklerini gözden geçirin.
Döküm yakalamalarını etkinleştirme
KAPSAYıCı içinde SQL Server işlemi başarısız oluyorsa, SYS_PTRACE etkin yeni bir kapsayıcı oluşturmanız gerekir. Bu, bir özel durumda döküm dosyası oluşturmak için gerekli olan bir işlemi izlemek için Linux özelliğini ekler. Döküm dosyası, sorunun giderilmesine yardımcı olmak için destek tarafından kullanılabilir. Aşağıdaki docker run komutu bu özelliği etkinleştirir.
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -e 'MSSQL_PID=Developer' --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -e 'MSSQL_PID=Developer' --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -e 'MSSQL_PID=Developer' --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -e 'MSSQL_PID=Developer' --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2025-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2025-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2025-latest
Caution
Parolanız varsayılan SQL Server password ilkesini izlemelidir. Varsayılan olarak, parola en az sekiz karakter uzunluğunda olmalı ve şu dört kümeden üçünün karakterlerini içermelidir: büyük harfler, küçük harfler, 10 tabanındaki basamaklar ve simgeler. Parolalar en çok 128 karakter uzunluğunda olabilir. Mümkün olduğunca uzun ve karmaşık parolalar kullanın.
SQL Server bağlantı hataları
Kapsayıcınızda çalışan SQL Server örneğine bağlanamıyorsanız aşağıdaki testleri deneyin:
Çıkışın STATUS sütununa bakarak SQL Server kapsayıcınızın çalıştığını kontrol edin. Aksi takdirde, başlatmak için
docker start <Container ID>kullanın.Varsayılan olmayan bir ana makine bağlantı noktasına (1433 dışında) eşleme yaptıysanız, bağlantı dizesinde bağlantı noktasını belirttiğinizden emin olun. Bağlantı noktası eşlemenizi çıkışın PORTS sütununda
docker ps -agörebilirsiniz. Örneğin, aşağıdaki komut sqlcmd'yi 1401 numaralı bağlantı noktasında dinleyen bir kapsayıcıya bağlar:sqlcmd -S 10.3.2.4,1401 -U sa -P '<YourPassword>'sqlcmd -S 10.3.2.4,1401 -U sa -P "<YourPassword>"sqlcmd -S 10.3.2.4,1401 -U sa -P "<YourPassword>"Mevcut eşlenmiş bir veri birimi veya veri birimi kapsayıcısıyla
docker runkullandıysanız, SQL ServerMSSQL_SA_PASSWORDdeğerini yoksayar. Bunun yerine, veri birimi veya veri birimi kapsayıcısı içindeki SQL Server verilerinden önceden yapılandırılmışsahesap parolası kullanılır. Verilerle ilişkilendirdiğinizsaparolayı kullandığınızı doğrulayın.SQL Server kurulumunu ve hata günlüklerini gözden geçirin.
SQL Server Kullanılabilirlik Grupları
Docker'ı SQL Server Kullanılabilirlik Grupları ile kullanıyorsanız iki ek gereksinim vardır.
Çoğaltma iletişimi için kullanılan bağlantı noktasını eşleyin (varsayılan 5022). Örneğin,
-p 5022:5022komutunuzun bir parçası olarakdocker runbelirtin.Komutun
-h YOURHOSTNAMEparametresiyle kapsayıcı ana bilgisayar adını açıkça ayarlayın. Bu konak adı, Kullanılabilirlik Grubunuzu yapılandırdığınızda kullanılır.-hile bunu belirtmezseniz, kapsayıcı kimliği varsayılan olarak kullanılır.
SQL Server kurulumu ve hata günlükleri
SQL Server kurulumuna ve hata günlüklerine /var/opt/mssql/log içinde bakabilirsiniz. Kapsayıcı çalışmıyorsa, önce kapsayıcıyı başlatın. Ardından, günlükleri incelemek için etkileşimli bir komut istemi kullanın. komutunu docker psçalıştırarak kapsayıcı kimliğini alabilirsiniz.
docker start <ContainerID>
docker exec -it <ContainerID> "bash"
Kapsayıcınızın içindeki bash oturumundan aşağıdaki komutları çalıştırın:
cd /var/opt/mssql/log
cat setup*.log
cat errorlog
Tip
Kapsayıcınızı oluştururken bir konak dizinini /var/opt/mssql dosyasına bağladıysanız, bunun yerine konaktaki eşlenen yoldaki günlük alt dizinine bakabilirsiniz.
Kapsayıcıda komut yürütme
Çalışan bir kapsayıcınız varsa, konak terminalinden kapsayıcı içinde komut yürütebilirsiniz.
Kapsayıcı kimliğini almak için aşağıdaki komutu çalıştırın:
docker ps -a
Kapsayıcıda bash terminali başlatmak için şunu çalıştırın:
docker exec -it <Container ID> /bin/bash
Artık komutları kapsayıcının içindeki terminalde çalıştırıyormuş gibi çalıştırabilirsiniz. İşiniz bittiğinde yazın exit. Bu işlem etkileşimli komut oturumundan çıkar, ancak kapsayıcınız çalışmaya devam eder.
İlgili içerik
SQL belgelerine katkıda bulunma
SQL içeriğini kendiniz düzenleyebildiğinizi biliyor muydunuz? Bunu yaparsanız, belgelerimizin geliştirilmesine yardımcı olmakla kalmaz, aynı zamanda sayfaya katkıda bulunan olarak da kabul edilirsiniz.
Daha fazla bilgi için Bkz. Microsoft Learn belgelerini düzenleme.