docker sql server安装

概述

一般情况下,部署sql server,需要准备一台windows server服务器,然后再安装sql server。

但是windows太耗费资源了,在docker中运行,是比较方便的。

硬件和软件要求

要在 Docker 容器上安装 SQL Server 2019,主机服务器必须满足以下要求:

  • 任何受支持的 Linux 分发版或 Windows 或 Mac 上装有 Docker 引擎 1.8 或更高版本
  • 至少 2 GB 的内存
  • 2 GB 的磁盘空间

下载镜像

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

目前最新版本是2022

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

安装sql server

docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Y.saabcd@1234" -p 1433:1433 -e "MSSQL_PID=Evaluation" --name sqlpreview --hostname sqlpreview -d -u root mcr.microsoft.com/mssql/server:2022-latest

参数说明:

|-----------------------------------------------|----------------------------------------------------------------------------------------------------------|
| 参数 | 说明 |
| -e "ACCEPT_EULA=Y" | 将 ACCEPT_EULA 变量设置为任意值,以确认接受最终用户许可协议。 SQL Server 映像>的必需设置。 |
| -e "MSSQL_SA_PASSWORD=Y.saabcd@1234" | 指定至少包含 8 个字符且符合密码策略的强密码。 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 sqlpreview | 为容器指定一个自定义名称,而不是使用随机生成的名称。 如果运行多个容器,则无法重复使用相同的名称。 |
| --hostname sqlpreview | 用于显式设置容器主机名。 如果未指定主机名,则主机名默认为容器 ID,这是随机生成的系统 GUID。 |

注意:MSSQL_SA_PASSWORD必须符合密码策略的强密码,如果密码太简单,会导致启动失败。

如果Docker容器启动报WARNING: IPv4 forwarding is disabled. Networking will not work

解决方法

打开sysctl配置文件/etc/sysctl.conf

添加如下代码

net.ipv4.ip_forward=1

刷新配置

sysctl -p

查看日志

docker logs -f sqlpreview

运行成功应该会看到与下面类似的输出:

复制代码
...
2024-08-18 13:12:56.66 spid14s     Recovery is complete. This is an informational message only. No user action is required.
2024-08-18 13:12:56.77 spid24s     The default language (LCID 0) has been set for engine and full-text services.
2024-08-18 13:12:56.83 spid24s     The tempdb database has 2 data file(s).

数据持久化

创建持久化目录

mkdir -p /data/mssql/

拷贝数据,-a保留文件权限

docker cp -a sqlpreview:/var/opt/mssql/data /data/mssql/

删除容器

docker rm -f sqlpreview

重新挂载目录运行

docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Y.saabcd@1234" -p 1433:1433 -e "MSSQL_PID=Evaluation" --name sqlpreview --hostname sqlpreview -d -u root -v /data/mssql/data:/var/opt/mssql/data mcr.microsoft.com/mssql/server:2022-latest

查看日志

docker logs -f sqlpreview

复制代码
...
2024-08-18 13:29:55.57 spid27s     The Service Broker endpoint is in disabled or stopped state.
2024-08-18 13:29:55.57 spid27s     The Database Mirroring endpoint is in disabled or stopped state.
2024-08-18 13:29:55.58 spid27s     Service Broker manager has started.
2024-08-18 13:29:55.59 spid13s     Recovery is complete. This is an informational message only. No user action is required.
相关推荐
测试员周周4 小时前
【Appium 系列】第16节-WebView-H5上下文切换 — 混合应用的自动化难点
运维·开发语言·人工智能·功能测试·appium·自动化·测试用例
风落无尘6 小时前
Stable Diffusion WebUI & ComfyUI 完整安装教程:官方部署+一键整合包+Docker容器化(2026最新)
docker·容器·stable diffusion
在角落发呆7 小时前
Linux转发配置:解锁网络互联的核心密码
linux·运维·网络
裴东青9 小时前
10-实战:RuoYi-Cloud的自动化发布
运维·ci/cd·自动化
哎呦,帅小伙哦9 小时前
Linux 时间:从原子钟到 clock_gettime 的每一面
linux·运维·服务器
sxgzzn9 小时前
新能源场站数智化转型:基于数字孪生与AI的智慧运维管理平台解析
大数据·运维·人工智能
张小姐的猫10 小时前
【Linux】多线程 —— 线程互斥
linux·运维·服务器·c++
CodeMartain10 小时前
Dify Windows 原生部署(无 Docker、纯本地)
运维·docker·容器
xxx1x1x10 小时前
极客向:DLL/运行库故障的底层逻辑与自动化修复方案
运维·自动化·dll文件·dll·dll修复·dll缺失·dll一键修复
YuanDaima204810 小时前
Linux 进阶运维与 AI 环境实战:进程管理、网络排错与 GPU 监控
linux·运维·服务器·网络·人工智能