Aracılığıyla paylaş


SQL Server Docker kapsayıcıları sorunlarını giderme

Ş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, ile sudoaynı komutları ç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.

Önemli

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. Böyle bir durumda, 1433 numaralı kapsayıcı bağlantı noktasını farklı bir konak bağlantı noktasına eşlemek için parametresini kullanın -p . Ö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`.
    

    Dikkat

    Parolanız,SQL Server varsayılan parola ilkesine uygun olmalıdır. 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 denied bir 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 $USER
    
  • Kapsayıcıdan hata iletileri olup olmadığını denetleyin.

    docker logs e69e056c702d
    
  • Hı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 kök 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 run kullanı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

SQL Server 2025 (17.x) veya sonraki bir sürüm için kapsayıcı dağıttığınızda, Standart Geliştirici sürümü için MSSQL_PID=DeveloperStandard ve Enterprise Developer sürümü için MSSQL_PID=Developer kullanın.

Dikkat

Parolanız,SQL Server varsayılan parola ilkesine uygun olmalıdır. 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 kullanın docker start <Container ID> .

  • Varsayılan olmayan bir ana bilgisayar bağlantı noktasına (1433 değil) eşlediyseniz, bağlantı noktasını bağlantı dizesi belirttiğinizden emin olun. Bağlantı noktası eşlemenizi çıkışın PORTS sütununda docker ps -a gö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 run kullandıysanız, SQL Server MSSQL_SA_PASSWORD değerini yoksayar. Bunun yerine, veri birimi veya veri birimi kapsayıcısı içindeki SQL Server verilerinden önceden yapılandırılmış sa hesap parolası kullanılır. Verilerle ilişkilendirdiğiniz sa parolayı 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:5022 komutunuzun bir parçası olarak docker run belirtin.

  • Komutun -h YOURHOSTNAME parametresiyle 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. -h ile 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

Tavsiye

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 komutunu ç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.

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.