【已解决】MACOS M4 芯片使用 Docker Desktop 工具安装 MICROSOFT SQL SERVER

1. 环境准备

  1. 确认 Docker Desktop 配置

确保已安装 Docker Desktop for Mac (Apple Silicon)(版本 ≥ 4.15.0)。开启 Rosetta(默认开启):

打开 Docker Desktop → Settings → General → Virtual Machine Options → Choose Virtual Machine Manager,勾选 Use Rosetta for x86/amd64 emulation on Apple Silicon。

  1. 验证架构
bash 复制代码
uname -m  # 应输出 "arm64"

2. 拉取并运行 SQL Server 容器

使用官方 ARM64 镜像(推荐),Microsoft 已提供支持 ARM64 的 SQL Server 2022 镜像。

命令如下:

bash 复制代码
docker run -e "ACCEPT_EULA=Y" \
           -e "MSSQL_SA_PASSWORD=Met@20250605" \
           -p 1433:1433 \
           -v sqlserver-data:/var/opt/mssql \
           --name sqlserver \
           --privileged \
           --platform linux/arm64/v8 \
           mcr.microsoft.com/azure-sql-edge
  • -e "ACCEPT_EULA=Y"

    接受 SQL Server 的最终用户许可协议(EULA)。必须设置为 Y 才能启动容器,否则会报错退出。

  • -e "MSSQL_SA_PASSWORD=Met@20250605"

    设置系统管理员(SA)账户的密码。密码必须符合 SQL Server 的复杂度要求:

    • 至少 8 个字符
    • 包含大写字母、小写字母、数字和特殊字符
    • 不包含用户名或简单词汇
  • -p 1433:1433

    将宿主机的 TCP 端口 1433 映射到容器内的 1433 端口,使外部应用可以通过 localhost:1433 访问 SQL Server。

    • 左侧 1433:宿主机端口(可修改为其他端口,如 1434:1433)
    • 右侧 1433:容器内 SQL Server 默认监听端口
  • -v sqlserver-data:/var/opt/mssql

    创建一个名为 sqlserver-data 的 Docker 数据卷,并挂载到容器内的 /var/opt/mssql 目录。

    这确保了:

    • 数据库文件在容器重启后不会丢失
    • 避免容器内文件系统限制导致的性能问题
  • --name sqlserver

    为容器指定名称 sqlserver,方便后续管理(如 docker start sqlserver、docker logs sqlserver)。

  • --platform linux/arm64/v8

    显式指定容器使用 ARM64 架构的镜像。在 macOS M4(ARM 芯片)上必须设置,否则 Docker 可能尝试运行 AMD64 镜像并导致兼容性问题。

  • --privileged

    赋予容器完全访问主机设备的权限,相当于容器内的 root 用户。

    注意:

    • 仅用于调试,生产环境不应使用
    • 可解决部分权限相关问题(如 /proc 目录访问)
  • mcr.microsoft.com/azure-sql-edge

    指定使用 Azure SQL Edge 的官方 Docker 镜像。这是一个轻量级版本的 SQL Server,专为 IoT 和边缘计算优化,支持 ARM64 架构。

运行截图:

相关推荐
岁忧1 小时前
macOS配置 GO语言环境
开发语言·macos·golang
爱吃香蕉的阿豪4 小时前
SignalR 全解析:核心原理、适用场景与 Vue + .NET Core 实战
vue.js·microsoft·c#·.netcore·signalr
ldj20206 小时前
Docker的docker-compose类比Spring的ApplicationContext
spring·docker
ldj20206 小时前
docker 自定义网桥作用
docker·容器
java叶新东老师6 小时前
k8s常用命令
云原生·容器·kubernetes
土豆丶杨8 小时前
centos 配置docker
docker·eureka·centos
岁忧8 小时前
macOS 安装 Homebrew
macos·homebrew
杰哥的狗8 小时前
nacos连接失败,启动失败常见问题
linux·docker
DarkAthena9 小时前
【GaussDB】构建一个GaussDB的Docker镜像
数据库·docker·gaussdb
棒棒AIT9 小时前
mac 苹果电脑 Intel 芯片(Mac X86) 安卓虚拟机 Android模拟器 的救命稻草(下载安装指南)
android·游戏·macos·安卓·mac