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

利用Docker在Mac上快速部署SQL Server开发环境

1. 为什么要在Mac上用Docker跑SQL Server作为常年和数据库打交道的开发者我太理解在Mac上折腾SQL Server的痛苦了。微软官方根本不提供macOS原生版本以前要么用虚拟机装Windows系统要么就得买台Windows电脑当开发机。直到Docker出现这个痛点才真正被解决。用Docker部署SQL Server有三大优势环境隔离不会污染本地系统删容器等于卸载软件版本切换想用SQL Server 2017还是2022改个镜像标签秒切换跨平台一致团队里有人用Windows有人用Mac容器配置完全一致实测在2018款MacBook Pro2.6GHz六核i732GB内存上Docker版的SQL Server 2019查询性能比虚拟机方案快3倍以上启动时间从原来的2分钟缩短到20秒。2. 手把手搭建SQL Server容器2.1 准备工作首先确保你的Mac满足macOS 10.15或更高版本至少4GB内存建议8GB20GB可用磁盘空间打开终端输入以下命令检查Docker是否就绪docker --version # 应该输出类似 Docker version 20.10.17, build 100c701如果还没装Docker Desktop去官网下载对应芯片版本的安装包Intel芯片选Mac with Intel chipM1/M2芯片选Mac with Apple chip安装完成后别急着启动先做这个关键设置点击菜单栏Docker图标 → Preferences → Resources内存调到至少4GB开发环境建议6-8GB勾选Use gRPC FUSE for file sharing2.2 拉取官方镜像微软提供了官方SQL Server Linux镜像我们直接拉取最新版docker pull mcr.microsoft.com/mssql/server:2022-latest如果想用特定版本可以替换标签为2017-latest2019-latest2022-latest镜像大小约1.5GB下载速度取决于网络状况。我实测在500M宽带下约3分钟完成。2.3 启动容器这条命令会创建并启动容器docker run -d --name sqlserver_dev \ -e ACCEPT_EULAY \ -e SA_PASSWORDYourStrongPassw0rd \ -e MSSQL_PIDDeveloper \ -p 1433:1433 \ -v ~/docker/mssql:/var/opt/mssql \ mcr.microsoft.com/mssql/server:2022-latest参数说明-d后台运行--name容器别名ACCEPT_EULA必须设为Y接受许可协议SA_PASSWORD密码需包含大小写字母、数字和特殊符号MSSQL_PID版本类型Developer版功能最全-p端口映射本地1433→容器1433-v数据卷挂载避免容器删除数据丢失常见问题排查容器反复重启大概率是密码不符合复杂度要求端口冲突检查本地是否已有SQL Server在运行磁盘权限错误在Docker设置中添加文件共享路径3. 图形化管理工具选型3.1 Azure Data Studio微软官方出品的免费工具下载地址https://learn.microsoft.com/en-us/sql/azure-data-studio/download-azure-data-studio连接配置步骤新建连接 → 服务器填localhost认证类型选SQL Login用户名填sa密码填启动容器时设置的密码数据库留空默认连接master库优势功能智能代码补全查询结果可视化Jupyter Notebook集成扩展市场丰富有SSMS插件3.2 Navicat Premium收费工具但体验优秀特别适合需要同时管理多种数据库的开发者。连接配置与Azure Data Studio类似但多几个实用功能数据同步开发→测试→生产环境数据结构对比自动生成ER图批量导入/导出学生可以通过GitHub学生包免费申请授权商业用户建议购买正版约$199/年。4. 高级配置技巧4.1 导入备份文件(bak)假设你的备份文件在~/Downloads/backup.bak执行# 在容器内创建备份目录 docker exec -it sqlserver_dev mkdir /var/opt/mssql/backup # 复制文件到容器 docker cp ~/Downloads/backup.bak sqlserver_dev:/var/opt/mssql/backup/然后在Azure Data Studio中右键数据库 → Restore设备类型选Backup files路径填容器内路径/var/opt/mssql/backup/backup.bak勾选Overwrite the existing database4.2 性能调优修改容器启动参数提升性能docker run -d ... \ -e MSSQL_MEMORY_LIMIT_MB4096 \ # 限制内存用量 -e MSSQL_COLLATIONChinese_PRC_CI_AS \ # 中文排序规则 --cpuset-cpus0-3 # 绑定CPU核心监控容器资源使用情况docker stats sqlserver_dev4.3 数据持久化建议把以下目录挂载到本地/var/opt/mssql/data数据库文件/var/opt/mssql/log日志文件/var/opt/mssql/backup备份文件这样即使删除容器数据也不会丢失。我习惯在~/docker/mssql下建立对应子目录来管理。5. 常见问题解决方案问题1连接时报Connection refused检查容器是否运行docker ps -a查看容器日志docker logs sqlserver_dev可能是端口冲突尝试换其他端口如-p 11433:1433问题2中文乱码创建数据库时指定排序规则CREATE DATABASE test COLLATE Chinese_PRC_CI_AS连接字符串添加;Charsetutf8问题3磁盘空间不足清理无用镜像docker system prune扩容Docker磁盘Preferences → Resources → Disk image size问题4时间不同步启动时添加时区参数-e TZAsia/Shanghai遇到其他问题可以查看微软官方文档https://learn.microsoft.com/en-us/sql/linux/sql-server-linux-docker-container-troubleshooting

相关文章:

利用Docker在Mac上快速部署SQL Server开发环境

1. 为什么要在Mac上用Docker跑SQL Server? 作为常年和数据库打交道的开发者,我太理解在Mac上折腾SQL Server的痛苦了。微软官方根本不提供macOS原生版本,以前要么用虚拟机装Windows系统,要么就得买台Windows电脑当开发机。直到Doc…...

Zotero Citation插件完整指南:三步搞定Word文献引用自动化

Zotero Citation插件完整指南:三步搞定Word文献引用自动化 【免费下载链接】zotero-citation Make Zoteros citation in Word easier and clearer. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-citation Zotero Citation插件是学术写作领域的革命性…...

软件测试全解析:方法、技能与实战案例,软件测试到底做什么?

软件测试是贯穿软件开发生命周期(SDLC)的系统性质量保障活动,其核心远非简单的“找Bug”。它要求从业者像“显微镜”般洞察细节,又需具备“架构师”的全局思维,通过一系列科学的方法、技术和流程,验证软件产…...

SSH连接报错?手把手教你用ssh-keygen清理known_hosts文件(附常见场景解析)

SSH密钥验证失败?深度解析known_hosts文件管理与安全实践 当你兴冲冲地准备通过SSH连接远程服务器部署最新代码时,终端突然弹出一串红色警告:"WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!"。这种场景对于开发者和运维人员来…...

Java整合海康相机SDK:构建工位管理系统的拍照录像客户端

1. 工位管理系统中的海康相机集成需求 在现代化工厂的生产线上,每个工位配备智能相机已经成为提升生产效率和质量控制的重要手段。我们最近实施的一个项目就采用了海康威视MV-CU120-0UC USB相机,配合工位上的平板电脑或工控机,构建了一套完整…...

前端微前端架构:别再把所有代码都放在一个仓库里了

前端微前端架构:别再把所有代码都放在一个仓库里了 什么是前端微前端架构? 前端微前端架构是一种将前端应用分解为多个独立的、可独立部署的微应用的架构风格。别以为微前端只是后端微服务的前端版本,它有自己的特点和挑战。 为什么需要前…...

从概率视角解析Logistic回归中的交叉熵损失函数

1. 从概率论到交叉熵:理解Logistic回归的底层逻辑 我第一次接触交叉熵损失函数时,完全被这个看似复杂的公式吓到了。直到后来从概率论的角度重新审视它,才发现这个设计简直精妙绝伦。让我们从一个简单的例子开始:假设你正在玩一个…...

【ROS2】SLAM建图成功,但是导航失败,加载地图报错Timed out waiting for transform from base_link to map to become availabl

背景 SLAM建图成功,但是使用命令ros2 launch nav2_bringup bringup_launch.py map:my_house.yaml use_sim_time:false 加载地图后,有报错打印 [component_container_isolated-1] [INFO] [1776087546.872633844] [global_costmap.global_costmap]: Checki…...

YOLO12模型在Web应用中的实时目标检测实现

YOLO12模型在Web应用中的实时目标检测实现 1. 引言 想象一下,你正在开发一个智能安防系统,需要实时分析摄像头画面中的行人、车辆和异常行为。或者你正在构建一个电商平台,希望自动识别用户上传的商品图片中的物品。传统方案需要将视频流发…...

基于Gradle 7.6与Spring Boot 3.0构建现代化Java 17微服务架构

1. 为什么选择Gradle 7.6 Spring Boot 3.0 Java 17组合 最近两年Java生态发生了翻天覆地的变化。作为一个经历过多个微服务项目的老兵,我发现这套技术组合正在成为企业级开发的新标准。Gradle 7.6带来的构建速度提升,Spring Boot 3.0对云原生的深度支持…...

解锁QQ音乐加密音频:qmc-decoder全面解决方案指南

解锁QQ音乐加密音频:qmc-decoder全面解决方案指南 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 还在为QQ音乐下载的加密音频文件无法在其他播放器或设备上播放…...

TinyML实战:手把手教你用C++和TensorFlow Lite Micro构建一个正弦波预测器

TinyML实战:用C和TensorFlow Lite Micro构建正弦波预测器的完整指南 在嵌入式AI的世界里,TinyML正掀起一场革命。想象一下,在一个只有指甲盖大小的微控制器上运行机器学习模型,实时预测正弦波数值——这正是我们将要探索的奇妙旅…...

避开开关电源的坑:AP值计算中3个易错点实测复盘

避开开关电源的坑:AP值计算中3个易错点实测复盘 在开关电源设计中,AP值(Area Product)作为磁芯选择的核心参数,直接关系到变压器的功率处理能力和整体效率。然而,即使经验丰富的工程师,在实际项…...

Wan2.1 VAE开发实战:集成至微信小程序实现前端AI绘图

Wan2.1 VAE开发实战:集成至微信小程序实现前端AI绘图 最近在捣鼓AI绘图应用,发现很多开发者把模型部署在服务器上,然后做个网页端就完事了。但说实话,现在大家更习惯用手机,如果能直接在微信小程序里玩AI绘图&#xf…...

从零构建可验证知识表示层:2024最新AIAgent架构白皮书核心章节精译(含OWL2+SHACL+Prolog混合推理原型代码)

第一章:可验证知识表示层的架构定位与核心价值 2026奇点智能技术大会(https://ml-summit.org) 可验证知识表示层(Verifiable Knowledge Representation Layer, VKRL)是现代可信AI系统中承上启下的关键抽象层,位于数据采集层与推理…...

Mission Planner/QGC连不上Pixhawk?可能是固件签名在捣鬼(附ArduCopter稳定版固件下载)

Mission Planner/QGC连接Pixhawk失败的深度排查与解决方案 当你的无人机开发工作正进行到关键时刻,地面站却突然无法识别Pixhawk飞控,这种"幽灵串口"现象确实令人抓狂。作为一名经历过多次类似问题的开发者,我理解这种挫败感——明…...

双NPN三极管恒流源电路设计与性能优化

1. 双NPN三极管恒流源电路基础解析 第一次接触恒流源电路时,我也被这个"电流稳定器"的概念深深吸引。想象一下,就像给水管装上智能阀门,无论水压如何变化,出水流量始终保持恒定。双NPN三极管组成的恒流源电路&#xff0…...

低成本ROS小车传感器融合实战:用MPU6050和模拟里程计搞定robot_pose_ekf

低成本ROS小车传感器融合实战:用MPU6050和模拟里程计实现精准定位 在机器人开发领域,定位精度往往决定了整个系统的上限。传统方案依赖昂贵的编码器和高端IMU,但今天我要分享的是一种完全不同的思路——如何用不到200元的硬件预算&#xff0c…...

LaTeX投稿IEEE期刊,编辑让我改排版?别慌,这份单栏+双倍行距+行号配置指南帮你搞定

LaTeX投稿IEEE期刊排版急救指南:单栏、双倍行距与行号配置实战 收到期刊编辑的格式修改意见时,那种"明明内容没问题却卡在排版细节"的焦虑感,每个科研人都深有体会。上周我刚帮同事处理完一份被要求"单栏双倍行距行号"的…...

别再只用基础API了!手把手教你用OnlyOffice Connector实现文档自动批注与事件监听

解锁OnlyOffice Connector高阶玩法:从自动化批注到智能事件流处理 当大多数开发者还在用基础API处理文档时,OnlyOffice Connector早已为深度集成准备好了全套武器库。想象一下这样的场景:法务团队上传的合同能自动标记风险条款,销…...

AIAgent异常处理不是加个retry就行!20年架构老兵用217次线上故障复盘,验证这6类错误必须分层隔离

第一章:AIAgent异常处理不是加个retry就行! 2026奇点智能技术大会(https://ml-summit.org) AI Agent 的异常处理常被简化为“套一层 retry 逻辑”,但这种做法在真实生产环境中极易引发级联失败、状态不一致与语义漂移。当 Agent 在多步骤任务…...

微信小程序ECharts图表Canvas层级覆盖问题:从原理到实战解决方案

1. 微信小程序ECharts图表Canvas层级问题解析 第一次在小程序里用ECharts做数据可视化时,我就被这个坑绊倒了——明明设置了z-index,为什么滚动页面时图表还是会盖住弹窗和导航栏?后来才发现,这是微信小程序原生组件的"特权&…...

Godot游戏资源解包终极指南:一键提取PCK文件所有资产

Godot游戏资源解包终极指南:一键提取PCK文件所有资产 【免费下载链接】godot-unpacker godot .pck unpacker 项目地址: https://gitcode.com/gh_mirrors/go/godot-unpacker 想要探索Godot游戏中的精美资源却无从下手?面对神秘的PCK文件格式感到困…...

Flux Sea Studio 在网络安全领域的创新应用:生成钓鱼演练场景图

Flux Sea Studio 在网络安全领域的创新应用:生成钓鱼演练场景图 最近和几个做企业安全的朋友聊天,他们都在头疼一件事:员工安全意识培训。传统的PPT讲解、看视频,效果越来越差。尤其是钓鱼邮件演练,市面上能找到的“钓…...

# 发散创新:基于CQRS模式的高并发订单系统架构设计与实现在现代分布式系统中,**读写分离**和**性能优化**是绕

发散创新:基于CQRS模式的高并发订单系统架构设计与实现 在现代分布式系统中,读写分离和性能优化是绕不开的核心命题。传统的单体架构在面对海量请求时逐渐暴露出瓶颈,而 CQRS(Command Query Responsibility Segregation&#xff0…...

iOS客户端应用开发深度解析:基于Flutter和Swift的技术实践

在移动应用开发领域,iOS平台因其高性能、安全性和用户体验而备受青睐。随着跨平台框架的兴起,Flutter和Swift成为开发iOS应用的核心工具。本文基于iOS客户端应用开发的职位描述,深入探讨Flutter和Swift在iOS开发中的应用、iOS核心原理(如消息机制、内存管理、UI渲染、多线程…...

Financial and Tax Quotation

Financial and Tax Quotation 财税...

LaTeX 参考文献管理与样式定制的终极实践

1. 从零开始构建你的文献数据库 写论文最头疼的莫过于整理参考文献,而LaTeX的.bib文件就像个智能文献管家。我刚开始用LaTeX时,手动输入了30多篇文献的.bib条目,结果发现作者名大小写不统一、期刊缩写格式混乱,最后排版出来惨不忍…...

如何用MelonLoader实现Unity游戏模组开发的终极跨平台方案

如何用MelonLoader实现Unity游戏模组开发的终极跨平台方案 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 你是否曾为Unity游戏…...

FontViewOK:字体预览与对比的轻量级解决方案

在日常办公或设计工作中,你是否曾为选择合适的字体而烦恼?Word里字体列表很长,但每种字体到底长什么样,只能一个一个点开看;想对比几种字体效果,要来回切换;或者你需要打印一份字体样式表&#…...