You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose部署SQL Server容器启动失败问题求助

Docker Compose部署SQL Server 2019容器失败的排查与解决

针对你遇到的SQL Server容器启动报错ERROR: [AppLoader] Failed to load LSA: 0xc0070102及权限拒绝问题,结合单独docker run可正常运行的情况,排查方向和解决方法如下:

1. 检查数据卷挂载的权限配置

SQL Server镜像默认使用mssql用户(UID 10001)运行,若你在Compose中挂载了宿主本地目录作为数据卷,该目录的权限可能不允许mssql用户读写:

  • 执行命令修改宿主目录权限:
    sudo chown 10001:10001 /path/to/your/sql/data/directory
    
  • 优先使用Docker命名卷替代宿主目录挂载,命名卷会自动处理权限问题,示例配置:
    volumes:
      sqlserver-data:
    

2. 确认必填环境变量是否配置正确

SQL Server容器启动必须设置以下两个环境变量,缺失或配置错误会导致启动失败:

  • ACCEPT_EULA=Y:接受SQL Server最终用户许可协议
  • MSSQL_SA_PASSWORD:SA账户密码,需符合复杂度要求(至少8字符,包含大小写、数字、特殊字符)
    完整的Compose服务示例:
services:
  sqlserver:
    image: mcr.microsoft.com/mssql/server:2019-latest
    environment:
      - ACCEPT_EULA=Y
      - MSSQL_SA_PASSWORD=YourStrong!Passw0rd
    volumes:
      - sqlserver-data:/var/opt/mssql
    ports:
      - "1433:1433"
volumes:
  sqlserver-data:

3. 调整Docker资源分配(Windows/macOS环境)

若使用Docker Desktop,SQL Server启动至少需要2GB内存,内存不足会触发LSA加载失败报错:

  • 打开Docker Desktop设置,进入Resources > Advanced,将内存分配调整至2GB以上,重启Docker后重试。

4. 解决Linux环境下的SELinux限制

Linux系统中SELinux可能会阻止容器访问宿主目录,临时关闭SELinux测试:

sudo setenforce 0

若容器能正常启动,为挂载目录添加SELinux上下文以长期解决:

sudo chcon -Rt svirt_sandbox_file_t /path/to/your/sql/data/directory

5. 排查Compose配置中的其他冲突

  • 避免为SQL Server服务设置user: root,强行切换用户会破坏镜像内部的权限结构;
  • 检查端口是否被其他进程占用,确保1433端口未被宿主或其他容器占用;
  • 若以上方法无效,可临时添加privileged: true到SQL Server服务配置中测试,但该选项会赋予容器极高权限,不建议长期使用。

内容的提问来源于stack exchange,提问作者Việt Tùng Nguyễn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 05:25:19