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.
相关推荐
虾稿29 分钟前
[手机Linux] 七,NextCloud优化设置
linux·运维·服务器
首发运维31 分钟前
centos 释放系统预留内存并关闭Kdump服务
linux·运维·centos·linux操作系统问题
稳重的大王36 分钟前
威联通NAS部署openwrt软路由保姆级教程附镜像文件
运维·服务器
ascarl201039 分钟前
【Nginx系列】---Nginx配置tcp转发
运维·tcp/ip·nginx
新子-存在了40 分钟前
linux中 mysql备份
linux·运维·mysql
ZHOUPUYU42 分钟前
VMware虚拟机超详细安装Linux教程(最新版)
linux·运维·服务器·windows·微软·centos·虚拟机
成都渲染101云渲染66661 小时前
云渲染,Enscape、D5、Lumion渲染提速教程
运维·服务器·unity·电脑·图形渲染·blender·houdini
初级代码游戏1 小时前
关于linux的ld.so.conf.d
linux·运维·服务器
m0_748232391 小时前
在Linux centos7环境下部署wblogic使用weblogic部署war包项目
linux·运维·服务器
handsomestWei1 小时前
Nginx整合Lua脚本
运维·nginx·lua