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.
相关推荐
没有口袋啦27 分钟前
《云原生基础设施》
云原生·容器·kubernetes·华为云
爱宇阳1 小时前
Vue3 前端项目 Docker 容器化部署教程
前端·docker·容器
帅帅梓1 小时前
docker 资源限制
运维·docker·容器
zt1985q2 小时前
本地部署消息代理软件 RabbitMQ 并实现外部访问( Windows 版本 )
运维·服务器·windows·rabbitmq·ruby
zhanglianzhao3 小时前
基于云服务器自建Rustdesk远程桌面——以京东云为例
运维·服务器·京东云
Physicist in Geophy.3 小时前
新版ubuntu中sac安装问题(缺少libncurses5)
linux·运维·ubuntu
可乐大数据3 小时前
Docker安装(基于云服务器ECS实例 CentOS 7.9系统)
服务器·docker·centos
马达加斯加D4 小时前
k8s --- resource 资源
云原生·容器·kubernetes
Ryan ZX4 小时前
Ubuntu 升级OpenSSH10.2p1与OpenSSL3.5.4版本避坑实践
linux·运维·服务器·ubuntu
qq_5470261795 小时前
微服务 - 网关统一鉴权
运维·网络·微服务