
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
2017, 2017-latest2019, 2019-latest2022, 2022-latest, latest问题提交地址: https://github.com/thirdgen88/mssql-docker/issues
上游镜像: mssql-hub
维护者: Kevin Collins
支持的架构:
amd64
描述来源: https://github.com/thirdgen88/mssql-docker/tree/main/docs (https://github.com/thirdgen88/mssql-docker/commits/main/docs)
此Docker镜像基于https://hub.docker.com/_/microsoft-mssql-server构建,添加了大量初始配置功能,如自动数据库备份恢复、初始SQL脚本执行、简易数据库备份等,且设置简单易用。
要运行此镜像,可参考微软Docker Hub页面的https://hub.docker.com/_/microsoft-mssql-server部分。自定义https://github.com/thirdgen88/mssql-docker/blob/main/shared/docker-entrypoint.sh%E8%84%9A%E6%9C%AC%E5%85%AC%E5%BC%80%E4%BA%86%E4%B8%80%E4%BA%9B%E9%A2%9D%E5%A4%96%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%EF%BC%8C%E4%BB%A5%E5%90%AF%E7%94%A8%E5%A2%9E%E5%BC%BA%E5%8A%9F%E8%83%BD%E3%80%82%E6%9C%AC%E8%8A%82%E5%B0%86%E4%BB%8B%E7%BB%8D%E9%83%A8%E5%88%86%E6%89%A9%E5%B1%95%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF%E3%80%82
要启动一个名为sql1、包含名为test的新空数据库的容器,请使用以下命令:
bash$ docker run -d -p 1433:1433 -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=ch@nge_m3" \ -e "MSSQL_DATABASE=test" -e "MSSQL_USER=testuser" -e "MSSQL_PASSWORD=testpass" \ --name sql1 kcollins/mssql:latest
您也可以指定在启动时生成随机sa账户密码并输出到控制台:
bash$ docker run -d -p 1433:1433 -e "ACCEPT_EULA=Y" -e "MSSQL_RANDOM_SA_PASSWORD=Y" \ --name sql1 kcollins/mssql:latest
有一个示例Docker Compose配置展示了此镜像的所有高级功能。以下是精简版本(完整文件见https://github.com/thirdgen88/mssql-docker/blob/main/docker-compose.yml):
yamlversion: '3.1' services: db: image: kcollins/mssql:latest ports: - 1433:1433 volumes: - db_data:/var/opt/mssql - ./db-backups:/backups - ./db-init:/docker-entrypoint-initdb.d secrets: - mssql-sa-password - mssql-password environment: # ACCEPT_EULA表示您接受最终用户许可协议 ACCEPT_EULA: Y MSSQL_SA_PASSWORD_FILE: /run/secrets/mssql-sa-password MSSQL_DATABASE: test MSSQL_USER: testuser MSSQL_PASSWORD_FILE: /run/secrets/mssql-password MSSQL_PID: Developer # 更改为所需版本,如"Express"、"Standard"等 secrets: mssql-sa-password: file: ./secrets/MSSQL_SA_PASSWORD mssql-password: file: ./secrets/MSSQL_PASSWORD volumes: db_data:
上述定义有几个值得注意的特性:
secrets功能更贴近Docker Swarm实现的使用方式。只需创建如./secrets/MSSQL_SA_PASSWORD的文件,其中包含单行所需密码。MSSQL_SA_PASSWORD_FILE环境变量包含秘密文件的路径,入口点脚本会自动读取和处理,确保密码不会直接显示在容器的环境变量中。
容器中的db-init绑定挂载允许您放置.sql或.bak文件,这些文件将在容器首次启动时处理。请注意,my_db.bak文件将被恢复为数据库[my_db],因此请注意此处放置的.bak文件名。任何带有.sql扩展名的有效T-SQL文件也会被处理。
可按微软的[基本指南]将命名卷挂载到/var/opt/mssql以持久化数据。
在使用Docker Compose运行前,请确保创建GitHub仓库中未预先存在的必要结构:
bash$ mkdir db-backups && mkdir db-init && mkdir secrets $ echo ch@nge_m3 > secrets/MSSQL_SA_PASSWORD $ echo testpass > secrets/MSSQL_PASSWORD
上述命令将创建必要的文件夹,并在秘密文件中预加载密码。您可根据需要更改这些文件中的密码。
要启动Docker Compose服务,使用以下命令以分离模式启动并查看日志:
bash$ docker-compose up -d && docker-compose logs -f
您可以安全地按Ctrl-C退出日志视图,而不会关闭容器。如果要关闭容器/服务:
bash$ docker-compose down
注意此时数据仍保留在命名卷中。如果要在关闭时同时删除卷,请使用-v选项。谨慎使用
此镜像内置快速简易的备份支持。假设您已将备份文件夹绑定挂载到主机,如以下docker run命令所示:
bash$ docker run -d -p 1433:1433 -e "ACCEPT_EULA=Y" -e "MSSQL_RANDOM_SA_PASSWORD=Y" \ -e "MSSQL_DATABASE=my_database" -e "MSSQL_USER=user1" -e "MSSQL_PASSWORD=testpass" \ -v ${PWD}/db-backups:/backups --name sql1 kcollins/mssql:latest
此时,您可通过简单的docker exec命令从主机执行备份:
bash$ docker exec sql1 backup.sh
您也可以指定要备份的数据库:
bash$ docker exec sql1 backup.sh my_database
在./db-backups文件夹中,您将看到命名规范的文件,如my_database_20190120_044511.bak。您可以定义RETAIN_FILES_COUNT=n环境变量,其中_n_是容器中/backups文件夹保留的备份文件数量。如果您设置定时任务定期调用backup.sh脚本,此功能会很有帮助。
如上述示例所示,您可通过指定以下附加环境变量来自定义数据库容器的启动行为(另见https://hub.docker.com/r/microsoft/mssql-server%E7%9A%84%E5%86%85%E7%BD%AE%E5%8F%98%E9%87%8F%EF%BC%89%EF%BC%9A
表1 - 环境变量
| 变量名 | 默认值 | 描述 |
|---|---|---|
MSSQL_DATABASE | 要在初始启动时创建的数据库名称 | |
MSSQL_USER | 将被创建并授予_MSSQL_DATABASE_的db_owner权限的用户名 | |
MSSQL_PASSWORD | _MSSQL_USER_的密码 | |
MSSQL_STARTUP_DELAY | 60 | 初始启动配置的等待时间(秒) |
注意,MSSQL_USER和MSSQL_PASSWORD变量也可指定_FILE后缀,如果变量包含容器中文件的路径,该文件包含变量的单行值。这在与Docker Secrets结合使用时很有帮助。
要让镜像配置新的空数据库,必须同时指定MSSQL_DATABASE、MSSQL_USER和MSSQL_PASSWORD。
微软文档页面有许多关于使用MSSQL Docker镜像的有用信息,详见Microsoft Docs。有关容器管理和其他管理任务的更多详细信息,请参阅该页面。
有关许可信息,请参考以下链接:
与所有Docker镜像一样,这些镜像可能还包含其他软件,这些软件可能受其他许可证约束(如基础发行版中的Bash等,以及包含的主要软件的任何直接或间接依赖项)。
对于任何预构建镜像的使用,镜像用户有责任确保对该镜像的任何使用符合其中包含的所有软件的相关许可证。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。





来自真实用户的反馈,见证轩辕镜像的优质服务