Docker中MSSQL Server容器评估期已过期的解决求助
解决SQL Server Docker容器评估期过期问题
核心问题
你使用的mcr.microsoft.com/mssql/server:2022-latest镜像默认是评估版,评估期限到期后容器无法启动。你之前执行的docker run命令存在错误:该命令是用来创建新容器的,而非启动现有容器,且旧容器依赖的评估版镜像本身带有授权限制,仅通过环境变量无法覆盖。
解决方案(保留现有数据库)
1. 备份现有容器的数据
先将容器内的数据库文件导出到本地,确保数据不丢失:
- 如果容器还能临时启动(尝试启动,失败也不影响备份):
docker start <你的容器ID/名称> - 复制容器内SQL Server数据目录到本地:
该目录包含所有数据库的docker cp <容器ID/名称>/var/opt/mssql/data/. ./mssql-data-backup.mdf和.ldf文件,是恢复数据的核心。
2. 拉取正式授权的Developer版镜像
拉取免费的Developer版本镜像(适合开发场景,无评估期限制):
docker pull mcr.microsoft.com/mssql/server:2022-developer
3. 创建新容器并挂载备份数据
用新的Developer镜像创建容器,同时挂载本地备份的数据目录,实现数据库复用:
docker run -e "MSSQL_PID=Developer" \ -e "ACCEPT_EULA=Y" \ -e "SA_PASSWORD=Gs070201!" \ -p 1433:1433 \ -v ./mssql-data-backup:/var/opt/mssql/data \ -d mcr.microsoft.com/mssql/server:2022-developer
-v参数将本地备份目录挂载到容器内的SQL Server数据目录,新容器会直接加载原有数据库文件。
4. 验证容器状态
检查容器是否正常启动:
docker ps
若容器状态显示Up,即可用SQL客户端连接验证数据库是否正常访问。
注意事项
- 避免使用
latest标签的SQL Server镜像,默认会拉取评估版,建议直接指定2022-developer这类带明确授权版本的镜像。 - 不要尝试用旧评估版镜像重新创建容器,镜像层面的授权限制无法通过环境变量突破。
内容的提问来源于stack exchange,提问作者Guilherme Sanches
相关产品推荐
相关产品推荐

