Aracılığıyla paylaş


SQL Server Linux kapsayıcılarını yapılandırma ve özelleştirme

Şunlar için geçerlidir:Linux üzerinde SQL Server

Bu makalede Docker kullanarak SQL Server Linux kapsayıcılarını nasıl yapılandırabileceğiniz ve özelleştirebileceğiniz açıklanır. Verilerinizi kalıcı yapabilir, kapsayıcılardan kapsayıcılara dosya taşıyabilir ve varsayılan ayarları değiştirebilirsiniz.

Bahşiş

Geliştirme amacıyla kapsayıcıda yeni bir SQL Server örneği oluşturmak için sqlcmd (Go) kullanabilirsiniz. Daha fazla bilgi için bkz. SQL Server kapsayıcısını oluşturma ve sorgulama.

Özelleştirilmiş kapsayıcı oluşturma

Özelleştirilmiş bir SQL Server kapsayıcısı oluşturmak için kendi Dockerfile oluşturabilirsiniz. Daha fazla bilgi için SQL Server ile bir Node uygulamasını birleştiren tanıtım'e bakın. Kendi Dockerfile'ınızı oluşturursanız, konteynerin ömrünü kontrol ettiği için ön plandaki sürece dikkat edin. Eğer çıkış yaparsa, kapsayıcı kapanır. Örneğin, bir betik çalıştırmak ve SQL Server'ı başlatmak istiyorsanız, SQL Server işleminin en doğru komut olduğundan emin olun. Diğer tüm komutlar arka planda çalıştırılır. Aşağıdaki komut bunu bir Dockerfile içinde gösterir:

/usr/src/app/do-my-sql-commands.sh & /opt/mssql/bin/sqlservr

Önceki örnekteki komutları tersine çevirdiyseniz, do-my-sql-commands.sh betiği tamamlandığında kapsayıcı kapatılır.

Verilerinizi kalıcı hale

docker stop ve docker startile kapsayıcıyı yeniden başlatsanız bile SQL Server yapılandırma değişiklikleriniz ve veritabanı dosyalarınız kapsayıcıda kalıcı hale gönderilir. Ancak kapsayıcıyı docker rmile kaldırırsanız SQL Server ve veritabanlarınız da dahil olmak üzere kapsayıcıdaki her şey silinir. Aşağıdaki bölümde, ilişkili kapsayıcılar silinse bile veritabanı dosyalarınızı kalıcı hale getirmek için veri birimlerinin nasıl kullanılacağı açıklanmaktadır.

Önemli

SQL Server için, Docker'da veri kalıcılığını anlamanız önemlidir. Bu bölümdeki tartışmaya ek olarak, docker kapsayıcılarındaki verilerin nasıl yönetileceğiniile ilgili Docker belgelerine bakın.

Bir konak dizinini veri birimi olarak bağla

İlk seçenek, kapsayıcınızda veri birimi olarak ana bilgisayarınıza bir dizin bağlamaktır. Bunu yapmak için docker run komutunu -v <host directory>:/var/opt/mssql bayrağıyla birlikte kullanın; burada <host directory> herhangi bir yoldur. Örneğin: Windows'ta C:\SQL veya Linux'ta ~/sqlvolumes. Bu, verilerin kapsayıcı yürütmeleri arasında geri yüklenmesini sağlar.

Not

SQL Server 2019 (15.x) ve sonraki sürümleri için kapsayıcılar otomatik olarak kök olmayan olarak başlatılırken, SQL Server 2017 (14.x) kapsayıcıları varsayılan olarak kök olarak başlar. SQL Server kapsayıcılarını kök olmayan olarak çalıştırma hakkında daha fazla bilgi için bkz. güvenli SQL Server Linux kapsayıcıları .

Önemli

SA_PASSWORD ortam değişkeni kullanım dışıdır. Bunun yerine MSSQL_SA_PASSWORD kullanın.

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
-p 1433:1433 \
-v <host directory>/data:/var/opt/mssql/data \
-v <host directory>/log:/var/opt/mssql/log \
-v <host directory>/secrets:/var/opt/mssql/secrets \
-d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
-p 1433:1433 `
-v <host directory>/data:/var/opt/mssql/data `
-v <host directory>/log:/var/opt/mssql/log `
-v <host directory>/secrets:/var/opt/mssql/secrets `
-d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" ^
-p 1433:1433 ^
-v <host directory>/data:/var/opt/mssql/data ^
-v <host directory>/log:/var/opt/mssql/log ^
-v <host directory>/secrets:/var/opt/mssql/secrets ^
-d mcr.microsoft.com/mssql/server:2017-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
-p 1433:1433 \
-v <host directory>/data:/var/opt/mssql/data \
-v <host directory>/log:/var/opt/mssql/log \
-v <host directory>/secrets:/var/opt/mssql/secrets \
-d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
-p 1433:1433 `
-v <host directory>/data:/var/opt/mssql/data `
-v <host directory>/log:/var/opt/mssql/log `
-v <host directory>/secrets:/var/opt/mssql/secrets `
-d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" ^
-p 1433:1433 ^
-v <host directory>/data:/var/opt/mssql/data ^
-v <host directory>/log:/var/opt/mssql/log ^
-v <host directory>/secrets:/var/opt/mssql/secrets ^
-d mcr.microsoft.com/mssql/server:2019-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
-p 1433:1433 \
-v <host directory>/data:/var/opt/mssql/data \
-v <host directory>/log:/var/opt/mssql/log \
-v <host directory>/secrets:/var/opt/mssql/secrets \
-d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
-p 1433:1433 `
-v <host directory>/data:/var/opt/mssql/data `
-v <host directory>/log:/var/opt/mssql/log `
-v <host directory>/secrets:/var/opt/mssql/secrets `
-d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" ^
-p 1433:1433 ^
-v <host directory>/data:/var/opt/mssql/data ^
-v <host directory>/log:/var/opt/mssql/log ^
-v <host directory>/secrets:/var/opt/mssql/secrets ^
-d mcr.microsoft.com/mssql/server:2022-latest

Dikkat

Parolanız, SQL Server varsayılanparola 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.

Bu teknik ayrıca Docker dışındaki konakta dosyaları paylaşmanızı ve görüntülemenizi sağlar.

Veri birimi kapsayıcılarını kullanma

İkinci seçenek bir veri birimi kapsayıcısı kullanmaktır. -v parametresiyle konak dizini yerine birim adı belirterek bir veri birimi kapsayıcısı oluşturabilirsiniz. Aşağıdaki örnek, sqlvolumeadlı bir paylaşılan veri birimi oluşturur.

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
-p 1433:1433 \
-v sqlvolume:/var/opt/mssql \
-d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
-p 1433:1433 `
-v sqlvolume:/var/opt/mssql `
-d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" ^
-p 1433:1433 ^
-v sqlvolume:/var/opt/mssql ^
-d mcr.microsoft.com/mssql/server:2017-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
-p 1433:1433 \
-v sqlvolume:/var/opt/mssql \
-d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
-p 1433:1433 `
-v sqlvolume:/var/opt/mssql `
-d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" ^
-p 1433:1433 ^
-v sqlvolume:/var/opt/mssql ^
-d mcr.microsoft.com/mssql/server:2019-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
-p 1433:1433 \
-v sqlvolume:/var/opt/mssql \
-d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
-p 1433:1433 `
-v sqlvolume:/var/opt/mssql `
-d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" ^
-p 1433:1433 ^
-v sqlvolume:/var/opt/mssql ^
-d mcr.microsoft.com/mssql/server:2022-latest

Dikkat

Parolanız, SQL Server varsayılanparola 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.

Çalıştırma komutunda örtük olarak bir veri birimi oluşturmaya yönelik bu teknik, Docker'ın eski sürümleriyle çalışmaz. Bu durumda, Docker belgelerinde belirtilen veri birimi kapsayıcısı oluşturma ve bağlamaaçık adımları kullanabilirsiniz.

Bu kapsayıcıyı durdurup kaldırsanız bile veri birimi devam eder. docker volume ls komutuyla görüntüleyebilirsiniz.

docker volume ls

Daha sonra aynı birim adına sahip başka bir kapsayıcı oluşturursanız, yeni kapsayıcı birimdeki SQL Server verilerini kullanır.

Veri birimi kapsayıcısını kaldırmak için docker volume rm komutunu kullanın.

Uyarı

Veri birimi kapsayıcısını silerseniz kapsayıcıdaki tüm SQL Server verileri kalıcı olarak silinir.

Yedekleme ve geri yükleme

Bu kapsayıcı tekniklerine ek olarak, standart SQL Server yedekleme ve geri yükleme tekniklerini de kullanabilirsiniz. Verilerinizi korumak veya verileri başka bir SQL Server örneğine taşımak için yedekleme dosyalarını kullanabilirsiniz. Daha fazla bilgi için bkz. linux SQL Server veritabanlarını yedekleme ve geri yükleme.

Uyarı

Yedeklemeler oluşturursanız, yedekleme dosyalarını kapsayıcının dışında oluşturduğunuzdan veya kopyaladığınızdan emin olun. Aksi takdirde, kapsayıcı kaldırılırsa yedekleme dosyaları da silinir.

Kapsayıcılarda VDI yedeklemesini ve geri yüklemesini etkinleştirme

Sanal Cihaz Arabirimi (VDI) yedekleme ve geri yükleme işlemleri artık SQL Server 2019 için CU15 (15.x) ve SQL Server 2017 için CU28 (14.x) ile başlayan SQL Server kapsayıcı dağıtımlarında desteklenmektedir. SQL Server kapsayıcıları için VDI tabanlı yedeklemeyi veya geri yüklemeleri etkinleştirmek için şu adımları izleyin:

  1. SQL Server kapsayıcılarını dağıtırken --shm-size seçeneğini kullanın. Başlamak için, aşağıdaki komutta gösterildiği gibi boyutlandırmayı 1 GB olarak ayarlayın. <password> geçerli bir parolayla değiştirin.

    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" \
    --shm-size 1g \
    -p 1433:1433 \
    --name sql19 \
    --hostname sql19 \
    -d mcr.microsoft.com/mssql/server:2019-latest
    

    seçenek --shm-size, kapsayıcının içindeki paylaşılan bellek dizininin (/dev/shm) boyutunu yapılandırmanıza olanak tanır ve bu boyut varsayılan olarak 64 MB olarak ayarlanır. Paylaşılan belleğin bu varsayılan boyutu, VDI yedeklemelerini desteklemek için yetersizdir. SQL Server kapsayıcılarını dağıtırken ve VDI yedeklemelerini desteklemek istediğinizde bunu en az 1 GB olarak yapılandırmanızı öneririz.

  2. Kapsayıcı içinde memory.enablecontainersharedmemory'deki yeni parametre mssql.conf'ı da etkinleştirmeniz gerekir. Kapsayıcıyı dağıtırken mssql.conf bölümünde açıklandığı gibi -v seçeneğini kullanarak bağlayabilir veya kapsayıcıyı dağıttıktan sonra kapsayıcının içindeki mssql.conf'i manuel olarak güncelleyebilirsiniz. aşağıda mssql.conf ayarının memory.enablecontainersharedmemoryolarak ayarlandığı örnek bir true dosyası verilmiş.

    [memory]
    enablecontainersharedmemory = true
    

Kapsayıcıdan dosya kopyalama

Kapsayıcıdan dosya kopyalamak için aşağıdaki komutu kullanın:

docker cp <Container ID>:<Container path> <host path>

docker ps -akomutunu çalıştırarak Kapsayıcı Kimliğini alabilirsiniz.

Örnek:

docker cp d6b75213ef80:/var/opt/mssql/log/errorlog /tmp/errorlog
docker cp d6b75213ef80:/var/opt/mssql/log/errorlog C:\Temp\errorlog
docker cp d6b75213ef80:/var/opt/mssql/log/errorlog C:\Temp\errorlog

Dosyaları kapsayıcıya kopyalama

Kapsayıcıya dosya kopyalamak için aşağıdaki komutu kullanın:

docker cp <Host path> <Container ID>:<Container path>

Örnek:

docker cp /tmp/mydb.mdf d6b75213ef80:/var/opt/mssql/data
docker cp C:\Temp\mydb.mdf d6b75213ef80:/var/opt/mssql/data
docker cp C:\Temp\mydb.mdf d6b75213ef80:/var/opt/mssql/data

Saat dilimini yapılandırma

SQL Server'ı belirli bir saat dilimine sahip bir Linux kapsayıcısında çalıştırmak için ortam değişkenini TZ yapılandırın (daha fazla bilgi için bkz. Linux'ta SQL Server 2022 ve sonraki sürümleri için saat dilimini yapılandırma ). Doğru saat dilimi değerini bulmak için linux bash isteminden tzselect komutunu çalıştırın:

tzselect

Saat dilimini seçtikten sonra, tzselect'nın çıkışı aşağıdaki örneğe benzer bir şekilde görüntülenir.

The following information has been given:

    United States
    Pacific

Therefore TZ='America/Los_Angeles' will be used.

Linux kapsayıcınızda aynı ortam değişkenini ayarlamak için bu bilgileri kullanabilirsiniz. Aşağıdaki örnekte SQL Server'ın Americas/Los_Angeles saat dilimindeki bir kapsayıcıda nasıl çalıştırılır gösterilmektedir:

sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
-p 1433:1433 --name sql1 \
-e 'TZ=America/Los_Angeles' \
-d mcr.microsoft.com/mssql/server:2017-latest
sudo docker run -e 'ACCEPT_EULA=Y' -e "MSSQL_SA_PASSWORD=<password>" `
-p 1433:1433 --name sql1 `
-e "TZ=America/Los_Angeles" `
-d mcr.microsoft.com/mssql/server:2017-latest
sudo docker run -e 'ACCEPT_EULA=Y' -e "MSSQL_SA_PASSWORD=<password>" ^
-p 1433:1433 --name sql1 ^
-e "TZ=America/Los_Angeles" ^
-d mcr.microsoft.com/mssql/server:2017-latest
sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
-p 1433:1433 --name sql1 \
-e 'TZ=America/Los_Angeles' \
-d mcr.microsoft.com/mssql/server:2019-latest
sudo docker run -e 'ACCEPT_EULA=Y' -e "MSSQL_SA_PASSWORD=<password>" `
-p 1433:1433 --name sql1 `
-e "TZ=America/Los_Angeles" `
-d mcr.microsoft.com/mssql/server:2019-latest
sudo docker run -e 'ACCEPT_EULA=Y' -e "MSSQL_SA_PASSWORD=<password>" `
-p 1433:1433 --name sql1 `
-e "TZ=America/Los_Angeles" `
-d mcr.microsoft.com/mssql/server:2019-latest
sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
-p 1433:1433 --name sql1 \
-e 'TZ=America/Los_Angeles' \
-d mcr.microsoft.com/mssql/server:2022-latest
sudo docker run -e 'ACCEPT_EULA=Y' -e "MSSQL_SA_PASSWORD=<password>" `
-p 1433:1433 --name sql1 `
-e "TZ=America/Los_Angeles" `
-d mcr.microsoft.com/mssql/server:2022-latest
sudo docker run -e 'ACCEPT_EULA=Y' -e "MSSQL_SA_PASSWORD=<password>" ^
-p 1433:1433 --name sql1 ^
-e "TZ=America/Los_Angeles" ^
-d mcr.microsoft.com/mssql/server:2022-latest
sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
-p 1433:1433 --name sql1 \
-e 'TZ=America/Los_Angeles' \
-d mcr.microsoft.com/mssql/server:2025-latest
sudo docker run -e 'ACCEPT_EULA=Y' -e "MSSQL_SA_PASSWORD=<password>" `
-p 1433:1433 --name sql1 `
-e "TZ=America/Los_Angeles" `
-d mcr.microsoft.com/mssql/server:2025-latest
sudo docker run -e 'ACCEPT_EULA=Y' -e "MSSQL_SA_PASSWORD=<password>" ^
-p 1433:1433 --name sql1 ^
-e "TZ=America/Los_Angeles" ^
-d mcr.microsoft.com/mssql/server:2025-latest

Dikkat

Parolanız, SQL Server varsayılanparola 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.

tempdb yolunu değiştirme

tempdb veritabanınızı kullanıcı veritabanlarınızdan ayrı tutmak iyi bir uygulamadır.

  1. SQL Server örneğine bağlanın ve ardından aşağıdaki Transact-SQL (T-SQL) betiğini çalıştırın. tempdbile ilişkili daha fazla dosya varsa, bunları da taşımanız gerekir.

    ALTER DATABASE tempdb
        MODIFY FILE (NAME = tempdev, FILENAME = '/var/opt/mssql/tempdb/tempdb.mdf');
    GO
    
    ALTER DATABASE tempdb
        MODIFY FILE (NAME = templog, FILENAME = '/var/opt/mssql/tempdb/templog.ldf');
    GO
    
  2. Aşağıdaki T-SQL betiğini kullanarak tempdb dosya konumunun değiştirildiğini doğrulayın:

    SELECT *
    FROM sys.sysaltfiles
    WHERE dbid = 2;
    
  3. Bu değişikliklerin etkili olması için SQL Server kapsayıcısını yeniden başlatmanız gerekir.

    docker stop sql1
    docker start sql1
    
    docker stop sql1
    docker start sql1
    
    docker stop sql1
    docker start sql1
    
  4. Kapsayıcıya bağlanmak için etkileşimli bir bash oturumu açın.

    docker exec -it sql1 bash
    
    docker exec -it sql1 bash
    
    docker exec -it sql1 bash
    

    Etkileşimli kabuğa bağlandıktan sonra, tempdbkonumunu denetlemek için aşağıdaki komutu çalıştırın:

    ls /var/opt/mssql/tempdb/
    

    Taşıma başarılı olursa benzer bir sonuç görürsünüz:

    tempdb.mdf templog.ldf
    

Varsayılan dosya konumunu değiştirme

MSSQL_DATA_DIR komutunuzda veri dizininizi değiştirmek için docker run değişkenini ekleyin, ardından kapsayıcınızın kullanıcısının erişimi olan konuma bir birim bağlayın.

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
-e 'MSSQL_DATA_DIR=/my/file/path' \
-v /my/host/path:/my/file/path \
-p 1433:1433 \
-d mcr.microsoft.com/mssql/server:2017-latest
docker run -e 'ACCEPT_EULA=Y' -e "MSSQL_SA_PASSWORD=<password>" `
-e "MSSQL_DATA_DIR=/my/file/path" `
-v /my/host/path:/my/file/path `
-p 1433:1433 `
-d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" ^
-e "MSSQL_DATA_DIR=/my/file/path" ^
-v /my/host/path:/my/file/path ^
-p 1433:1433 ^
-d mcr.microsoft.com/mssql/server:2017-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
-e 'MSSQL_DATA_DIR=/my/file/path' \
-v /my/host/path:/my/file/path \
-p 1433:1433 \
-d mcr.microsoft.com/mssql/server:2019-latest
docker run -e 'ACCEPT_EULA=Y' -e "MSSQL_SA_PASSWORD=<password>" `
-e "MSSQL_DATA_DIR=/my/file/path" `
-v /my/host/path:/my/file/path `
-p 1433:1433 `
-d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" ^
-e "MSSQL_DATA_DIR=/my/file/path" ^
-v /my/host/path:/my/file/path ^
-p 1433:1433 ^
-d mcr.microsoft.com/mssql/server:2019-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
-e 'MSSQL_DATA_DIR=/my/file/path' \
-v /my/host/path:/my/file/path \
-p 1433:1433 \
-d mcr.microsoft.com/mssql/server:2022-latest
docker run -e 'ACCEPT_EULA=Y' -e "MSSQL_SA_PASSWORD=<password>" `
-e "MSSQL_DATA_DIR=/my/file/path" `
-v /my/host/path:/my/file/path `
-p 1433:1433 `
-d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" ^
-e "MSSQL_DATA_DIR=/my/file/path" ^
-v /my/host/path:/my/file/path ^
-p 1433:1433 ^
-d mcr.microsoft.com/mssql/server:2022-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
-e 'MSSQL_DATA_DIR=/my/file/path' \
-v /my/host/path:/my/file/path \
-p 1433:1433 \
-d mcr.microsoft.com/mssql/server:2025-latest
docker run -e 'ACCEPT_EULA=Y' -e "MSSQL_SA_PASSWORD=<password>" `
-e "MSSQL_DATA_DIR=/my/file/path" `
-v /my/host/path:/my/file/path `
-p 1433:1433 `
-d mcr.microsoft.com/mssql/server:2025-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" ^
-e "MSSQL_DATA_DIR=/my/file/path" ^
-v /my/host/path:/my/file/path ^
-p 1433:1433 ^
-d mcr.microsoft.com/mssql/server:2025-latest

Kapsayıcı içinde SQL Server'ı yapılandırmak için mssql-config kullanma

SQL Server kapsayıcılarında parametreleri ayarlamak için mssql-conf aracını kullanabilirsiniz.

Örneğin, aşağıdaki adımları kullanarak örnek için bir bellek sınırı ayarlayabilirsiniz:

  1. kök kullanıcı olarak docker exec kullanarak kapsayıcıya doğrudan bağlanın. sqlcontainer yerine kapsayıcı adınızı yazın.

    docker exec -u root -it sqlcontainer "bash"
    
  2. Bir ayarı değiştirmek için mssql-conf kullanın. Bu örnek, memory.memorylimitmb ayarını 2 GB (2.048 MB) olarak değiştirir.

    /opt/mssql/bin/mssql-conf set memory.memorylimitmb 2048
    

Özel Docker kapsayıcı örnekleri

Özel Docker kapsayıcıları örnekleri için bkz. https://github.com/microsoft/mssql-docker/tree/master/linux/preview/examples. Örnekler şunlardır:

Dockerfiles kullanarak Docker kapsayıcıları oluşturma ve çalıştırma hakkında bilgi için GitHub'da ML Services örneklerine bakın.

Denetim grubu (cgroup) v2 ile bellek sınırlarını yapılandırma

SQL Server 2025 (17.x) ve SQL Server 2022 (16.x) CU 20'den başlayarak, SQL Server denetim grubu (cgroup) v2 kısıtlamalarını algılar ve buna uyar ve Docker, Kubernetes ve OpenShift ortamlarında performans kararlılığını ve kaynak yalıtımını artırır. Denetim grupları Linux çekirdeğinde CPU ve bellek gibi sistem kaynakları üzerinde ayrıntılı denetim sağlar.

Cgroup v2 desteğiyle SQL Server, kapsayıcılı dağıtımlarda daha önce gözlemlenen bellek (OOM) hatalarını azaltır; özellikle kapsayıcı belirtimlerinde tanımlanan bellek sınırlarının zorlanmadığı Kubernetes kümelerinde (örneğin AKS v1.25+).

Cgroup sürümünü denetleme

stat -fc %T /sys/fs/cgroup

Sonuçlar aşağıdaki gibidir:

Result Description
cgroup2fs Cgroup v2 kullanıyorsunuz
cgroup cgroup v1 kullanıyorsunuz

cgroup v2'ye geçme

En kolay yol, kutudan çıkararak cgroup v2'yi destekleyen bir dağıtım seçmektir.

El ile geçiş yapmanız gerekiyorsa GRUB yapılandırmanıza aşağıdaki satırı ekleyin:

systemd.unified_cgroup_hierarchy=1

Ardından, GRUB'yi güncelleştirmek için aşağıdaki komutu çalıştırın:

sudo update-grub

Daha fazla bilgi için aşağıdaki kaynaklara bakın:

  • hızlı başlangıç kılavuzunu takip ederek Docker'da SQL Server 2017 (14.x) kapsayıcı imajlarını kullanmaya başlayın.
  • hızlı başlangıç ilerleyerek Docker'da SQL Server 2019 (15.x) kapsayıcı görüntülerini kullanmaya başlayın
  • Hızlı başlangıcı izleyerek Docker'da SQL Server 2025 (17.x) kapsayıcı görüntülerini kullanmaya başlama

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.