1 背景
自 SQL Server 2019 CU3 起,支持 Ubuntu 18.04。
自 SQL Server 2019 CU10 起,支持 Ubuntu 20.04。
Docker 引擎 1.8+
至少 2 GB 的磁盘空间
至少 2 GB 的 RAM
博主机器:
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.11.0-37-generic x86_64)
2 创建容器
拉取镜像
1
|
docker pull mcr.microsoft.com/mssql/server:2019-latest |
查看镜像
1
2
3
4
|
docker images root@dev-virtual-machine:/home/dev# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mcr.microsoft.com/mssql/server 2019-latest 6db3c5ebc331 3 weeks ago 1.55GB |
运行容器
1
2
3
4
5
6
7
|
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Pass@w0rd" -p 51433:1433 --name mssql -h mssql -d mcr.microsoft.com/mssql/server:2019-latest<font face="Arial, Verdana, sans-serif"><span style="white-space: normal;"> </span></font> |
参数 | 说明 |
---|---|
-e “ACCEPT_EULA=Y” 将 ACCEPT_EULA 变量设置为任意值,以确认接受最终用户许可协议。 | SQL Server 映像的必需设置。 |
-e “SA_PASSWORD=Passw0rd” 指定至少包含 8 个字符且符合 SQL Server 密码要求的强密码。 | SQL Server 映像的必需设置。 |
-p 51433:1433 将主机环境中的 TCP 端口(第一个值)映射到容器中的 TCP 端口(第二个值)。 | 在此示例中,SQL Server 侦听容器中的 TCP 1433,并对主机上的端口 1433 公开。 |
–name sql1 为容器指定一个自定义名称,而不是使用随机生成的名称。 | 如果运行多个容器,则无法重复使用相同的名称。 |
-h sql1 用于显式设置容器主机名,如果不指定它,则默认为容器 ID, | 该 ID 是随机生成的系统 GUID。 |
mcr.microsoft.com/mssql/server:2019-latest SQL Server 2019 | Ubuntu Linux 容器映像。 |
查看容器
1
2
3
|
root@dev-virtual-machine:/home/dev# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6498220c95f6 mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/perm…" 24 minutes ago Up 23 minutes 0.0.0.0:51433->1433/tcp, :::51433->1433/tcp mssql |
将 -h 和 --name 设为相同的值是一种很好的方法,可以轻松地识别目标容器
3 修改SA密码
微软官方建议修改SA密码
SA 帐户是安装过程中在 SQL Server 实例上创建的系统管理员。 创建 SQL Server 容器后,通过在容器中运行 echo $SA_PASSWORD,可发现指定的 SA_PASSWORD 环境变量。
选择 SA 用户要使用的强密码。
使用 docker exec 运行sqlcmd,以使用 Transact-SQL 更改密码。 以下示例将从用户输入中读取旧密码和新密码。
1
2
3
4
|
sudo docker exec -it mssql /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}")\"" |
4 链接mssql
下列步骤在容器内部使用 SQL Server 命令行工具 sqlcmd 来连接 SQL Server。
使用 docker exec -it 命令在运行的容器内部启动交互式 Bash Shell。 在下面的示例中,mssql是在创建容器时由 --name 参数指定的名称。
1
|
sudo docker exec -it mssql "bash" |
在容器内部使用 sqlcmd 进行本地连接。 默认情况下,sqlcmd 不在路径之中,因此需要指定完整路径。
1
|
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Passw0rd" |
如果成功,应会显示 sqlcmd 命令提示符:1>
5 容器外链接mssql
1.查找承载容器的计算机的 IP 地址。 在 Linux 上,使用 ifconfig 或 ip addr。在 Windows 上,使用 ipconfig。
2.对于本示例,请在客户端计算机上安装 sqlcmd 工具
3.运行 sqlcmd,指定 IP 地址和映射容器中的端口 1433 的端口。 本例中为主机上的端口 51433,则在此处使用它。 还需要在防火墙上打开相应的入站端口以允许连接。
4.运行 Transact-SQL 命令。 完成后,键入 QUIT。
navicat 链接注意事项
使用Navicat连接Sqlserver数据库时,若端口号不是默认端口号,需要在主机IP后使用英文逗号加端口号的形式。
对于Navicat,以上设置后,需要安装SQL Server Native Client 10.0驱动,安装程序为Navicat软件根目录下的sqlncli_x64.msi,32位版也有提供。安装完成后,创建Sqlserver连接时高级选项卡中的Native Client驱动将有下拉选项可供选择。
总结
到此这篇关于Docker部署Microsoft Sql Server详细步骤的文章就介绍到这了,更多相关Docker部署Microsoft Sql Server内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/kobe_okok/article/details/121666312