Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: 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.