利用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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2516148.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!