Docker:为 Linux 上的 SQL Server 安装容器 |
您所在的位置:网站首页 › 连接docker › Docker:为 Linux 上的 SQL Server 安装容器 |
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 |