Docker:为 Linux 上的 SQL Server 安装容器

您所在的位置:网站首页 连接docker Docker:为 Linux 上的 SQL Server 安装容器

Docker:为 Linux 上的 SQL Server 安装容器

2024-07-17 02:07| 来源: 网络整理| 查看: 265

CLI sqlcmd 从注册表拉取容器

从 Microsoft 容器注册表中请求 SQL Server 2022 (16.x) Linux 容器映像。

sudo docker pull mcr.microsoft.com/mssql/server:2022-latest docker pull mcr.microsoft.com/mssql/server:2022-latest docker pull mcr.microsoft.com/mssql/server:2022-latest

提示

本快速入门将创建 SQL Server 2022 (16.x) 容器。 如果希望为不同版本的 SQL Server 创建 Linux 容器,请参阅本文的 SQL Server 2017 (14.x) 或 SQL Server 2019 (15.x) 版本。

前一个命令请求最新的 SQL Server 2022 (16.x) Linux 容器映像。 如果想请求某个特定映像,需添加一个冒号和标记名称,如 mcr.microsoft.com/mssql/server:2022-GA-ubuntu。 若要查看所有可用的映像,请参阅 Microsoft 工件注册表。

运行容器

要使用 Docker 运行 Linux 容器映像,可以从 Bash Shell 或提升的 PowerShell 命令提示符使用以下命令。

重要

SA_PASSWORD 环境变量已弃用。 请改用 MSSQL_SA_PASSWORD。

sudo docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=" \ -p 1433:1433 --name sql1 --hostname sql1 \ -d \ mcr.microsoft.com/mssql/server:2022-latest

注意

如果使用 PowerShell Core,请将双引号替换为单引号。

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=" ` -p 1433:1433 --name sql1 --hostname sql1 ` -d ` mcr.microsoft.com/mssql/server:2022-latest docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=" ` -p 1433:1433 --name sql1 --hostname sql1 ` -d ` mcr.microsoft.com/mssql/server:2022-latest

密码应符合 SQL Server 默认密码策略,否则容器无法设置 SQL Server,会停止工作。 默认情况下,密码必须为至少八个字符且包含以下四种字符中的三种:大写字母、小写字母、十进制数字、符号。 可使用 docker logs 命令检查错误日志。

默认情况下,本快速入门会创建一个使用 SQL Server 开发人员版的容器。 在容器中运行生产版本的过程略有不同。 有关详细信息,请参阅运行生产容器映像。

下表对前一个 docker run 示例中的参数进行了说明:

参数 说明 -e "ACCEPT_EULA=Y" 将 ACCEPT_EULA 变量设置为任意值,以确认接受最终用户许可协议。 SQL Server 映像的必需设置。 -e "MSSQL_SA_PASSWORD=" 指定至少包含 8 个字符且符合密码策略的强密码。 SQL Server 映像的必需设置。 -e "MSSQL_COLLATION=" 指定自定义 SQL Server 排序规则,而不使用默认值 SQL_Latin1_General_CP1_CI_AS。 -p 1433:1433 将主机环境中的 TCP 端口(第一个值)映射到容器中的 TCP 端口(第二个值)。 在此示例中,SQL Server 侦听容器中的 TCP 1433,此容器端口随后会对主机上的 TCP 端口 1433 公开。 --name sql1 为容器指定一个自定义名称,而不是使用随机生成的名称。 如果运行多个容器,则无法重复使用相同的名称。 --hostname sql1 用于显式设置容器主机名。 如果未指定主机名,则主机名默认为容器 ID,这是随机生成的系统 GUID。 -d 在后台运行容器(守护程序)。 mcr.microsoft.com/mssql/server:2022-latest SQL Server Linux 容器映像。 更改系统管理员密码

SA 帐户是安装过程中在 SQL Server 实例上创建的系统管理员。 创建 SQL Server 容器后,可以通过在容器中运行 echo $MSSQL_SA_PASSWORD 来发现指定的 MSSQL_SA_PASSWORD 环境变量。 为了安全起见,应在生产环境中更改 SA 密码。

选择 SA 用户要使用的强密码。

使用 docker exec 运行sqlcmd,以使用 Transact-SQL 更改密码。 以下示例将从用户输入中读取旧密码和新密码。

sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \ -S localhost -U SA \ -P "$(read -sp "Enter current SA password: "; echo "${REPLY}")" \ -Q "ALTER LOGIN SA WITH PASSWORD=\"$(read -sp "Enter new SA password: "; echo "${REPLY}")\"" docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd ` -S localhost -U SA -P "" ` -Q "ALTER LOGIN SA WITH PASSWORD=''" docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd ` -S localhost -U SA -P "" ` -Q "ALTER LOGIN SA WITH PASSWORD=''"

注意

默认情况下,较新版本的 sqlcmd 是安全的。 有关连接加密的详细信息,请参阅 sqlcmd 实用工具(对于 Windows)和使用 sqlcmd 进行连接(对于 Linux 和 macOS)。 如果连接不成功,则可以将 -No 选项添加到 sqlcmd,以指定加密是可选的,而不是强制性的。

最佳做法是将 sa 帐户禁用

重要

稍后将需要这些凭证。 请务必记下在此处输入的用户 ID 和密码。

在安装后首次使用 sa 帐户连接到 SQL Server 实例时,请务必执行这些步骤,然后立即禁用 sa 登录,此操作为安全最佳做法。

创建新的登录帐户,并将其设为 sysadmin 服务器角色的成员。

根据你使用的是容器还是非容器部署,启用 Windows 身份验证,并创建一个新的基于 Windows 的登录帐户,并将其添加到 sysadmin 服务器角色中。

教程:使用 adutil 为 Linux 上的 SQL Server 配置 Active Directory 身份验证

教程:为 Linux 上的 SQL Server 容器配置 Active Directory 身份验证

否则,请使用 SQL Server 身份验证创建登录帐户,并将其添加到 sysadmin 服务器角色。

使用创建的新登录帐户连接 SQL Server 实例。

按照安全最佳做法的建议,禁用 sa 帐户。

拉取并运行容器

从 Microsoft Container Registry 中拉取并运行 SQL Server 2022 (16.x) Linux 容器映像。

sudo sqlcmd create mssql --tag 2022-latest --hostname sql1 --name sql1 --port 1433 --accept-eula sqlcmd create mssql --tag 2022-latest --hostname sql1 --name sql1 --port 1433 --accept-eula sqlcmd create mssql --tag 2022-latest --hostname sql1 --name sql1 --port 1433 --accept-eula

提示

本快速入门将创建 SQL Server 2022 (16.x) 容器。 如果希望为不同版本的 SQL Server 创建 Linux 容器,请参阅本文的 SQL Server 2017 (14.x) 或 SQL Server 2019 (15.x) 版本。

前一个命令请求最新的 SQL Server 2022 (16.x) Linux 容器映像。 如果想请求某个特定映像,需更改标记名称,如 2022-CU11-ubuntu-22.04。 若要查看可用的所有映像,请运行以下命令:

sudo sqlcmd create mssql get-tags sqlcmd create mssql get-tags sqlcmd create mssql get-tags

默认情况下,本快速入门会创建一个使用 SQL Server 开发人员版的容器。 在容器中运行生产版本的过程略有不同。 有关详细信息,请参阅运行生产容器映像。

下表对前一个 docker run 示例中的参数进行了说明:

参数 说明 --ACCEPT-EULA 添加 --ACCEPT-EULA 标志以确认接受最终用户许可协议。 SQL Server 映像的必需设置。 --port 1433 映射主机环境中的 TCP 端口和容器中 TCP 端口。 在此示例中,SQL Server 侦听容器中的 TCP 1433,此容器端口随后会对主机上的 TCP 端口 1433 公开。 --name sql1 为容器指定一个自定义名称,而不是使用随机生成的名称。 如果运行多个容器,则无法重复使用相同的名称。 --hostname sql1 用于显式设置容器主机名。 如果未指定主机名,则主机名默认为容器 ID,这是随机生成的系统 GUID。 --tag 2022-latest SQL Server Linux 容器映像。

sqlcmd 会禁用 SA 密码,并在创建容器时基于当前用户创建新的登录名。 使用以下命令查看登录信息。 在后面的步骤中,您将需要此信息。

sudo sqlcmd config view --raw sqlcmd config view --raw sqlcmd config view --raw


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3