docker部署sqlserver过程记录

目录

前言

一、基础概念

二、过程步骤

1.docker操作

2.问题及解决

总结


前言

最近接触到了NL2SQL,有个相对比较适合自己的开源项目,就说看下。忽然发现自己电脑都没安装个数据库。那就安装一个吧,自从有了docker,能docker安装,那就不直接安装到电脑上了,环境会很乱,而且不如docker方便管理

于是,开启了docker部署sqlserver之旅~


一、基础概念

docker:轻量级的容器管理工具,和虚拟机类似,但是比虚拟机轻了很多

sqlserver:微软家族的数据库服务

二、过程步骤

1.docker操作

拉取sqlserver镜像,具体sqlserver版本根据自己的需要选择即可,应该是2017及以上版本才支持了docker容器部署

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

运行sqlser容器

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=sa密码" -p 1433:1433 --name mssqlserver-2019 -v E:\DockerData\mssql:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2019-latest

相关参数做下解释:

-e "ACCEPT_EULA=Y":同意相关安装协议,必需

-e "MSSQL_SA_PASSWORD=sa密码":设置sa的登录密码

-p 1433:1433:设置端口映射

-v E:\DockerData\mssql:/var/opt/mssql:设置路径映射,实现数据的持久化,否则容器停了以后数据库文件就丢了

2.问题及解决

执行如上命令,一开始看容器是启动了,端口映射信息在docker desktop也看到了,结果很快容器变灰了(启动失败),docker logs 容器名称,报错如下:

bash 复制代码
This program has encountered a fatal error and cannot continue running at Mon Apr 15 03:30:57 2024
The following diagnostic information is available:

         Reason: 0x00000006
        Message: Termination of \SystemRoot\system32\AppLoader.exe was due to fatal error 0xC0000001
        Address: 0x3fffb588a1cf
    Stack Trace:
                 file://package4/windows/system32/sqlpal.dll+0x000000000000E7CF
                 file://package4/windows/system32/sqlpal.dll+0x000000000000BA99
                 file://package4/windows/system32/sqlpal.dll+0x000000000008A432
                 file://package4/windows/system32/sqlpal.dll+0x000000000008A1CF
                 file://package4/windows/system32/sqlpal.dll+0x00000000000885D8
                 file://package4/windows/system32/sqlpal.dll+0x0000000000003D1F
                 file://package4/windows/system32/sqlpal.dll+0x0000000000205568
                 file:///windows/system32/AppLoader.exe+0x000000000000371F
                 file:///windows/system32/AppLoader.exe+0x0000000000003869
                 file:///windows/system32/AppLoader.exe+0x0000000000003889
                 file:///windows/system32/AppLoader.exe+0x000000000000A8E8
                 file:///Windows/SYSTEM32/KERNEL32.DLL+0x0000000000014414
                 file:///windows/system32/ntdll.dll+0x0000000000075541
        Modules:
                 file://package4/windows/system32/sqlpal.dll=DDAF496DC6C5824FD011F6F3B5BA15F01
                 file:///windows/system32/AppLoader.exe=71025FF72BB4A78E6487F0EED40B02561
                 file:///Windows/SYSTEM32/KERNEL32.DLL=C715300FB2664729A6126A3F591E6F302
                 file:///windows/system32/ntdll.dll=45137AA3F9814512B3123991067EEE6E2
        Process: 8 - sqlservr
         Thread: 39 (application thread 0x78)
    Instance Id: a0185509-4b50-4f25-969b-22a4caedbced
       Crash Id: 503973a6-bbeb-4013-987a-05927efd01cd
    Build stamp: 5a0761fb39e7c8e4bfc101a82ddf31307102bb6e23a5345ee2033874d57334af
   Distribution: Ubuntu 20.04.6 LTS
     Processors: 20
   Total Memory: 16593043456 bytes
      Timestamp: Mon Apr 15 03:30:57 2024

猜测:看错误信息,有permission dined相关字样,难道是权限不足?

行动:看了下映射的本地路径其实已经有写入文件,不过还是试着以管理员权限重新执行命令,不过还是不行

找AI:问了半天AI也搞不懂啥情况

猜测:难道是2019的镜像有问题?

行动:下载2022版本,重复如上操作,结果一样的报错

找度娘:看到一篇写docker部署sqlserver的,人家在上面设置路径映射的时候设置了3个路径映射,分别给mssql下data、log、secrets设置路径映射

行动:那就这么试试吧,果然可以了。而且,我试着只添加data路径映射也是可以的


总结

这个操作其实挺简单,就是有时候需要避个坑。

相关推荐
Elieal3 小时前
Spring 框架核心技术全解析
java·spring·sqlserver
斯普信专业组3 小时前
Docker 常用命令与时区配置指南
docker·容器·eureka
天一生水water15 小时前
ubuntu使用毫秒镜像方式安装docker mysql
ubuntu·阿里云·docker
Qayrup18 小时前
docker 搭建私有仓库,推送并拉取
运维·docker·容器
郭庆汝18 小时前
docker拉取英伟达官方cuda11.8镜像
docker·cuda11.8
天下不喵19 小时前
Ubuntu24.04安装Docker过程记录
docker
冷血~多好21 小时前
使用docker部署elk,实现日志追踪
elk·docker·容器
天一生水water21 小时前
docker-compose安装
运维·docker·容器
蓝象_1 天前
docker安装配置mysql
mysql·docker·容器