暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在Docker中快速使用SQL Server 2022环境

DB宝 2022-11-23
2817

简介

docker hub地址:https://hub.docker.com/_/microsoft-mssql-server

使用 Docker 请求和运行 SQL Server 2022 (16.x) Linux 容器映像 mssql-server-linux。然后可以使用 sqlcmd 进行连接,创建第一个数据库并运行查询。

此映像包含在基于 Ubuntu 20.04 的 Linux 上运行的 SQL Server。它可在 Linux 上与 Docker 引擎 1.8+ 配合使用。

本文中的示例使用 docker
命令。但大多数这些命令也可用于 Podman。Podman 有一个类似于 Docker 引擎的命令行接口。可以详细了解 Podman。

快速安装部署

下载镜像

1docker search mssql
2docker pull mcr.microsoft.com/mssql/server:2022-latest

创建容器

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

1docker rm -f mssql2022
2docker run -d --name mssql2022 --hostname  mssql2022 \
3-p 1433:1433  \
4-e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=lhr@zr123" \
5-e "TZ=Asia/Shanghai" \
6-e "MSSQL_PID=Enterprise" \
7-e "MSSQL_COLLATION=Chinese_PRC_BIN" \
8mcr.microsoft.com/mssql/server:2022-latest

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

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

参数说明
-e "ACCEPT_EULA=Y"ACCEPT_EULA
变量设置为任意值,以确认接受最终用户许可协议。SQL Server 映像的必需设置。
-e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>"
指定至少包含 8 个字符且符合 SQL Server 密码要求的强密码。SQL Server 映像的必需设置。
-e "MSSQL_COLLATION=<SQL_Server_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-latestSQL Server Linux 容器映像。

容器配置

Requirements

  • This image requires Docker Engine 1.8+ in any of their supported platforms.

  • At least 2GB of RAM (3.25 GB prior to 2017-CU2). Make sure to assign enough memory to the Docker VM if you're running on Docker for Mac or Windows.

  • Requires the following environment flags

    "ACCEPT_EULA=Y"

    "MSSQL_SA_PASSWORD="

    "MSSQL_PID=(default: Developer)"

  • A strong system administrator (SA) password: At least 8 characters including uppercase, lowercase letters, base-10 digits and/or non-alphanumeric symbols.

Environment Variables

You can use environment variables to configure SQL Server on Linux Containers.

ACCEPT_EULA
confirms your acceptance of the End-User Licensing Agreement.

MSSQL_SA_PASSWORD
is the database system administrator (userid = 'sa') password used to connect to SQL Server once the container is running. Important note: This password needs to include at least 8 characters of at least three of these four categories: uppercase letters, lowercase letters, numbers and non-alphanumeric symbols.

MSSQL_PID
is the Product ID (PID) or Edition that the container will run with. Acceptable values:

  • Developer : This will run the container using the Developer Edition (this is the default if no MSSQL_PID environment variable is supplied)

  • Express : This will run the container using the Express Edition

  • Standard : This will run the container using the Standard Edition

  • Enterprise : This will run the container using the Enterprise Edition

  • EnterpriseCore : This will run the container using the Enterprise Edition Core

For a complete list of environment variables that can be used, refer to the documentation here.

使用容器

 1docker exec -it mssql2022 bash
2/opt/mssql-tools/bin/sqlcmd  -S localhost -U sa -P "lhr@zr123"
3
4
5SELECT Name from sys.Databases
6go
7
8SELECT @@VERSION
9SELECT SERVERPROPERTY('Edition')
10go
11
12-- 修改sa密码
13USE [master]
14GO
15ALTER LOGIN [sa] WITH CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
16GO
17USE [master]
18GO
19ALTER LOGIN [sa] WITH PASSWORD=N'lhr'
20GO
21
22
23-- 远程访问
24sqlcmd -S 192.168.8.8,1433 -U sa -P lhr
25sqlcmd -S 192.168.8.8,1433 -d master -h -1 -U sa -P lhr -W -Q "set nocount on;SELECT name FROM master..sysdatabases"
26
27
28-- linux客户端SQL Server安装
29curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo
30yum install -y mssql-tools unixODBC-devel mssql-cli
31
32echo "export PATH=/opt/mssql-tools/bin:$PATH" >> /root/.bashrc
33source /root/.bashrc
34
35
36-- windows下客户端
37https://learn.microsoft.com/zh-cn/sql/tools/sqlcmd-utility?view=sql-server-ver16
38路径:C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn
39
40-- SSMS
41https://learn.microsoft.com/zh-cn/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16

示例:

 1[root@lhr ~]# docker exec -it mssql2022 bash
2mssql@mssql2022:/$ 
3mssql@mssql2022:/$ /opt/mssql-tools/bin/sqlcmd  -S localhost -U SA -P "lhr@zr123"
41> SELECT Name from sys.Databases
52go
6Name                                                                                                                            
7-----------------------------
8master                                                                                                                          
9tempdb                                                                                                                          
10model                                                                                                                           
11msdb                                                                                                                            
12
13(4 rows affected)
141SELECT @@VERSION
152go
16
17-----------------------------------------------------------------------------
18Microsoft SQL Server 2022 (RTM) - 16.0.1000.6 (X64) 
19        Oct  8 2022 05:58:25 
20        Copyright (C) 2022 Microsoft Corporation
21        Enterprise Edition (64-biton Linux (Ubuntu 20.04.5 LTS) <X64>                                                                                                                      
22
23(1 rows affected)
241USE [master]
252GO
26Changed database context to 'master'.
271ALTER LOGIN [sa] WITH CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
282GO
291USE [master]
302GO
31Changed database context to 'master'.
321ALTER LOGIN [sa] WITH PASSWORD=N'lhr'
332GO
341
35
36-- 远程访问
37
38PS C:\Users\lhrxxt> sqlcmd -S 192.168.8.8,1433 -U sa -P lhr
391exit
40PS C:\Users\lhrxxt> sqlcmd -S 192.168.8.8,1433 -d master -h -1 -U sa -P lhr -W -Q "set nocount on;SELECT name FROM master..sysdatabases"
41master
42tempdb
43model
44msdb
45
46PS C:\Users\lhrxxt> sqlcmd -S 192.168.8.8,1433 -U sa -P lhr
471set nocount on;SELECT name FROM master..sysdatabases
482go
49name
50--------------------------------------------------------------------------------------------------------------------------------
51master
52tempdb
53model
54msdb
551>

SSMS客户端访问:

健康检查

参考:https://www.xmmup.com/sql-servershujukuxunjianjiaoben.html

其它不再截图。。。。

参考

https://learn.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-docker?view=sql-server-linux-ver16&pivots=cs1-bash


文章转载自DB宝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论