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 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:
SQL Server kapsayıcılarını dağıtırken
--shm-sizeseç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-latestseç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.Kapsayıcı içinde
memory.enablecontainersharedmemory'deki yeni parametremssql.conf'ı da etkinleştirmeniz gerekir. Kapsayıcıyı dağıtırkenmssql.confbölümünde açıklandığı gibi-vseçeneğini kullanarak bağlayabilir veya kapsayıcıyı dağıttıktan sonra kapsayıcının içindekimssql.conf'i manuel olarak güncelleyebilirsiniz. aşağıdamssql.confayarınınmemory.enablecontainersharedmemoryolarak ayarlandığı örnek birtruedosyası 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.
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'); GOAşağıdaki T-SQL betiğini kullanarak
tempdbdosya konumunun değiştirildiğini doğrulayın:SELECT * FROM sys.sysaltfiles WHERE dbid = 2;Bu değişikliklerin etkili olması için SQL Server kapsayıcısını yeniden başlatmanız gerekir.
docker stop sql1 docker start sql1docker stop sql1 docker start sql1docker stop sql1 docker start sql1Kapsayıcıya bağlanmak için etkileşimli bir
bashoturumu açın.docker exec -it sql1 bashdocker exec -it sql1 bashdocker exec -it sql1 bashEtkileş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:
kök kullanıcı olarak
docker execkullanarak kapsayıcıya doğrudan bağlanın.sqlcontaineryerine kapsayıcı adınızı yazın.docker exec -u root -it sqlcontainer "bash"Bir ayarı değiştirmek için mssql-conf kullanın. Bu örnek,
memory.memorylimitmbayarı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:
- Dockerfile örneği Full-Text Search ile
- RHEL 7 ve SQL Server 2019 için Dockerfile örneği
- RHEL 8 ve SQL Server 2017 için Dockerfile örneği
- Full-Text Search, PolyBase ve Araçlar ile Ubuntu 20.04 ve SQL Server 2019 için Dockerfile örneği
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ıç: Helm grafiklerini kullanarak Kubernetes'e SQL Server Linux kapsayıcısı dağıtma
- Linux Çekirdeği Cgroup v2 dokümantasyonu
- Denetim Grubu v2
İlgili içerik
- 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
- Docker'da SQL Server 2022 (16.x) kapsayıcı görüntülerini kullanmaya başlamak için hızlı başlangıç kılavuzu ile 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.