Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:SQL Server в Linux
В этой статье объясняется, как вы можете настроить и кастомизировать контейнеры SQL Server Linux с помощью Docker. Вы можете сохранять данные, перемещать файлы из контейнеров и изменять параметры по умолчанию.
Совет
Sqlcmd (Go) можно использовать для создания нового экземпляра SQL Server в контейнере для целей разработки. Дополнительные сведения см. в статье "Создание и запрос контейнера SQL Server".
Создание настраиваемого контейнера
Вы можете создать собственный файл Dockerfile для создания настраиваемого контейнера SQL Server. Дополнительные сведения см. в демонстрации совместной работы SQL Server и приложения Node. Создавая свой собственный Dockerfile, обратите внимание на передний процесс, так как он управляет сроком службы контейнера. Если он завершает работу, контейнер отключается. Например, если вы хотите выполнить скрипт и запустить SQL Server, убедитесь, что процесс SQL Server указан в крайней правой позиции команды. Все остальные команды выполняются в фоновом режиме. Это демонстрируется на примере следующей команды в Dockerfile:
/usr/src/app/do-my-sql-commands.sh & /opt/mssql/bin/sqlservr
Если отменить команды в предыдущем примере, контейнер закроется после выполнения скрипта do-my-sql-commands.sh.
Сохранение данных
Изменения в конфигурации SQL Server и файлы базы данных сохраняются в контейнере даже в том случае, если он был перезапущен с использованием команд docker stop и docker start. Тем не менее, если удалить контейнер с помощью команды docker rm, будет удалено все его содержимое, включая SQL Server и ваши базы данных. В следующем разделе описывается, как можно использовать тома данных для сохранения файлов базы данных даже в случае удаления связанных контейнеров.
Внимание
Для SQL Server важно понимать сохраняемость данных в Docker. Помимо этого раздела, мы также рекомендуем вам ознакомиться с информацией об управлении данными в контейнерах Docker в документации по Docker.
Подключение каталога узла в качестве тома данных
Первый вариант — подключить каталог на вашем хосте в качестве тома данных в контейнере. Для этого используйте команду docker run с флагом -v <host directory>:/var/opt/mssql, где <host directory> это заданный путь. Например, C:\SQL в Windows или ~/sqlvolumes Linux. Такой подход позволяет восстанавливать данные в перерывах между выполнениями контейнера.
Примечание.
Контейнеры для SQL Server 2019 (15.x) и более поздних версий автоматически запускались как не корневые, а контейнеры SQL Server 2017 (14.x) запускались как корневые по умолчанию. Дополнительные сведения о запуске контейнеров SQL Server в качестве не корневых, см. в разделе "Безопасные контейнеры SQL Server Linux".
Внимание
Переменная среды SA_PASSWORD является нерекомендуемой. Вместо этого используйте MSSQL_SA_PASSWORD.
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
Внимание
Пароль должен соответствовать политике паролей по умолчанию SQL Server. По умолчанию пароль должен быть не короче восьми символов и содержать три вида символов из следующих: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Пароли могут иметь длину до 128 символов. Рекомендуется использовать максимально длинные и сложные пароли.
Кроме того, этот способ позволяет предоставлять общий доступ к файлам на узле и просматривать их за пределами Docker.
Используйте контейнеры с объемом данных
Второй способ — использовать контейнер томов данных. Чтобы создать контейнер тома данных, укажите имя тома вместо каталога узла с параметром -v. В следующем примере создается общий том данных с именем sqlvolume.
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
Внимание
Пароль должен соответствовать политике паролей по умолчанию SQL Server. По умолчанию пароль должен быть не короче восьми символов и содержать три вида символов из следующих: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Пароли могут иметь длину до 128 символов. Рекомендуется использовать максимально длинные и сложные пароли.
Этот метод для неявного создания тома данных в команде выполнения не работает с более старыми версиями Docker. В таком случае следует явно следовать действиям, изложенным в документации Docker, в разделе Создание и подключение контейнера тома данных.
Даже если вы остановите и удалите этот контейнер, том данных будет сохранен. Вы сможете просмотреть его с помощью команды docker volume ls.
docker volume ls
Если затем создать другой контейнер с тем же именем тома, в новом контейнере будут использоваться данные SQL Server, располагающиеся на этом томе.
Чтобы удалить контейнер тома данных, воспользуйтесь командой docker volume rm.
Предупреждение
Если вы удалите контейнер тома данных, все содержащиеся в нем данные SQL Server будут удалены без возможности восстановления.
Резервное копирование и восстановление
Помимо этих техник работы с контейнерами, вы также можете использовать стандартные методы резервного копирования и восстановления SQL Server. Резервные копии файлов можно использовать для защиты данных или их переноса на другой экземпляр SQL Server. Дополнительные сведения см. в статье Резервное копирование и восстановление баз данных SQL Server в Linux.
Предупреждение
Обратите внимание, что создаваемые резервные копии должны размещаться за пределами контейнера. В противном случае при удалении контейнера файлы резервных копий также будут удалены.
Включение резервного копирования и восстановления VDI в контейнерах
В развертываниях контейнеров SQL Server операции резервного копирования и восстановления интерфейса виртуального устройства (VDI) поддерживаются начиная с CU15 для SQL Server 2019 (15.x) и CU28 для SQL Server 2017 (14.x). Выполните следующие действия, чтобы включить резервное копирование или восстановление на основе VDI для контейнеров SQL Server:
При развертывании контейнеров SQL Server используйте параметр
--shm-size. Чтобы начать, задайте размер в 1 ГБ, как показано в следующей команде. Замените<password>допустимым паролем.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Параметр
--shm-sizeпозволяет настроить размер каталога общей памяти (/dev/shm) в контейнере, для которого по умолчанию установлено значение 64 МБ. Этот размер по умолчанию для общей памяти недостаточен для поддержки резервного копирования VDI. Рекомендуем настроить это на минимальное значение в 1 ГБ при развертывании контейнеров SQL Server, чтобы поддерживать резервное копирование с использованием VDI.Необходимо также включить новый параметр
memory.enablecontainersharedmemoryвmssql.confконтейнере. Вы можете монтироватьmssql.confпри развертывании контейнера, используя параметр-v, как описано в разделе «Сохранение данных», или после развертывания контейнера вручную обновляя внутри контейнера. Ниже приведен примерmssql.confфайла с заданным параметромmemory.enablecontainersharedmemorytrue.[memory] enablecontainersharedmemory = true
Копирование файлов из контейнера
Чтобы скопировать файл из контейнера, выполните следующую команду:
docker cp <Container ID>:<Container path> <host path>
Идентификатор контейнера можно получить, выполнив команду docker ps -a.
Пример:
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
Копирование файлов в контейнер
Чтобы скопировать файл в контейнер, выполните следующую команду:
docker cp <Host path> <Container ID>:<Container path>
Пример:
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
Настройка часового пояса
Чтобы запустить SQL Server в контейнере Linux с определенным часовным поясом, настройте TZ переменную среды (дополнительные сведения см. в разделе "Настройка часового пояса для SQL Server 2022 и более поздних версий в Linux "). Чтобы определить соответствующее значение часового пояса, выполните команду tzselect из командной строки Bash в Linux:
tzselect
После выбора часового пояса tzselect отображаются выходные данные, аналогичные следующему примеру:
The following information has been given:
United States
Pacific
Therefore TZ='America/Los_Angeles' will be used.
Эти сведения можно использовать для установки соответствующей переменной среды в контейнере с Linux. В следующем примере демонстрируется, как запустить SQL Server в контейнере с часовым поясом Americas/Los_Angeles:
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
Внимание
Пароль должен соответствовать политике паролей по умолчанию SQL Server. По умолчанию пароль должен быть не короче восьми символов и содержать три вида символов из следующих: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Пароли могут иметь длину до 128 символов. Рекомендуется использовать максимально длинные и сложные пароли.
Измените путь tempdb
Лучше всего хранить базу данных tempdb отдельно от пользовательских баз данных.
Подключитесь к экземпляру SQL Server и запустите следующий скрипт Transact-SQL (T-SQL). Если есть больше файлов, связанных с
tempdb, вам нужно переместить их тоже.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Убедитесь, что расположение файла
tempdbизменено, используя следующий скрипт T-SQL:SELECT * FROM sys.sysaltfiles WHERE dbid = 2;Вы должны перезапустить контейнер SQL Server, чтобы эти изменения вступили в силу.
docker stop sql1 docker start sql1docker stop sql1 docker start sql1docker stop sql1 docker start sql1Создайте интерактивный сеанс
bashдля подключения к контейнеру.docker exec -it sql1 bashdocker exec -it sql1 bashdocker exec -it sql1 bashПодключившись к интерактивной оболочке, выполните следующую команду, чтобы проверить расположение
tempdb:ls /var/opt/mssql/tempdb/Если перемещение выполнено успешно, вы увидите аналогичные выходные данные:
tempdb.mdf templog.ldf
Изменение расположения файла по умолчанию
Добавьте переменную MSSQL_DATA_DIR, чтобы изменить каталог данных в команде docker run, а затем подключите том к этому расположению, к которому имеет доступ пользователь контейнера.
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
Использование mssql-config для настройки SQL Server в контейнере
Средство mssql-conf можно использовать для задания параметров в контейнерах SQL Server.
Например, можно задать ограничение памяти для экземпляра, выполнив следующие действия:
Подключитесь непосредственно к контейнеру, используя
docker execкак корневой пользователь. Заменитеsqlcontainerименем контейнера.docker exec -u root -it sqlcontainer "bash"Чтобы изменить параметр, используйте mssql-conf . В этом примере настройка
memory.memorylimitmbизменяется на 2 ГБ (2048 МБ)./opt/mssql/bin/mssql-conf set memory.memorylimitmb 2048
Примеры пользовательских контейнеров Docker
Примеры пользовательских контейнеров Docker представлены в разделе https://github.com/microsoft/mssql-docker/tree/master/linux/preview/examples. Примеры:
- Пример Dockerfile с полнотекстовым поиском
- Пример Dockerfile для RHEL 7 и SQL Server 2019
- Пример Dockerfile для RHEL 8 и SQL Server 2017
- Пример Dockerfile для Ubuntu 20.04 и SQL Server 2019 с полнотекстовым поиском, PolyBase и инструментами
Сведения о создании и запуске контейнеров Docker с помощью Dockerfile см. в примерах служб машинного обучения на GitHub.
Настройка ограничений памяти с помощью группы управления (cgroup) версии 2
Начиная с SQL Server 2025 (17.x) и SQL Server 2022 (16.x) CU 20, SQL Server обнаруживает ограничения группы управления (cgroup) версии 2, улучшает стабильность производительности и изоляцию ресурсов в средах Docker, Kubernetes и OpenShift. Группы управления позволяют точно контролировать ядро Linux над системными ресурсами, такими как ЦП и память.
При поддержке cgroup версии 2 SQL Server устраняет ошибки, ранее наблюдавшиеся в контейнерных развертываниях, особенно в кластерах Kubernetes (например, AKS версии 1.25+), где ограничения памяти, определенные в спецификациях контейнеров, не были применены.
Проверка версии cgroup
stat -fc %T /sys/fs/cgroup
Результаты приведены следующим образом:
| Result | Description |
|---|---|
cgroup2fs |
Вы используете cgroup версии 2 |
cgroup |
Вы используете cgroup версии 1 |
Переключение на cgroup версии 2
Самый простой путь — выбор дистрибутива, который поддерживает cgroup версии 2 из коробки.
Если вам нужно переключиться вручную, добавьте следующую строку в конфигурацию GRUB:
systemd.unified_cgroup_hierarchy=1
Затем выполните следующую команду, чтобы обновить GRUB:
sudo update-grub
Дополнительные сведения см. в следующих ресурсах:
- Краткое руководство: Развертывание контейнера Linux SQL Server в Kubernetes с помощью чартов Helm
- Документация по cgroup версии 2 ядра Linux
- Группа управления версии 2
Связанный контент
- Начните работать с образами контейнеров SQL Server 2017 (14.x) в Docker, перейдя к краткому руководству.
- Начните работать с образами контейнеров SQL Server 2019 (15.x) в Docker, просмотрев краткое руководство.
- Начните использовать образы контейнеров SQL Server 2022 (16.x) в Docker, выполнив краткое руководство.
- Приступайте к работе с образами контейнеров SQL Server 2025 (17.x) в Docker, изучив краткое руководство.
Примите участие в разработке документации по SQL
Знаете ли вы, что содержимое SQL можно изменить самостоятельно? Это не только улучшит нашу документацию, но и даст вам статус участника в создании этой страницы.
Дополнительные сведения см. в документации по редактированию Microsoft Learn.