当前位置: 首页 > article >正文

【已解决】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. 验证架构
uname -m  # 应输出 "arm64"

2. 拉取并运行 SQL Server 容器

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

命令如下:

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 架构。

运行截图:
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/2401360.html

相关文章:

  • Quipus系统的视频知识库的构建原理及使用
  • web3-去中心化金融深度剖析:DEX、AMM及兑换交易传播如何改变世界
  • 国芯思辰|SCS5501/5502芯片组打破技术壁垒,重构车载视频传输链路,兼容MAX9295A/MAX96717
  • 【图像处理3D】:点云图是怎么生成的
  • 压敏电阻的选型都要考虑哪些因素?同时注意事项都有哪些?
  • 用WPDRRC模型,构建企业安全防线
  • 使用 Amazon Q Developer CLI 快速搭建各种场景的 Flink 数据同步管道
  • Java应用服务在Kubernetes集群中的改造与配置
  • Linux 里 su 和 sudo 命令这两个有什么不一样?
  • 「数据分析 - Pandas 函数」【数据分析全栈攻略:爬虫+处理+可视化+报告】
  • JAVASCRIPT 简化版数据库--智能编程——仙盟创梦IDE
  • YAML在自动化测试中的三大核心作用
  • 命名管道实现本地通信
  • iOS上传应用包错误问题 “Invalid bundle. The “UIInterfaceOrientationPortrait”“
  • 【LeetCode】1061. 按字典序排列最小的等效字符串(并查集)
  • 猎板厚铜PCB工艺能力如何?
  • Flutter快速上手,入门教程
  • 算法:前缀和
  • DEVICENET转MODBUS TCP网关与AB数据输出模块的高效融合方案研究
  • 牛客小白月赛113
  • Mac版本Android Studio配置LeetCode插件
  • 电子电路基础1(杂乱)
  • rocketmq延迟消息的底层原理浅析
  • 【openssl】升级为3.3.1,避免安全漏洞
  • 使用 HTML +JavaScript 从零构建视频帧提取器
  • 基于若依前后分离版-用户密码错误锁定
  • 论文速读《DexWild:野外机器人策略的灵巧人机交互》
  • Bug问题
  • 【数据结构】5. 双向链表
  • 【Linux手册】冯诺依曼体系结构