本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

本Docker镜像基于mcr.microsoft.com/mssql-tools:latest构建,整合了Microsoft SQL Server命令行工具与PowerShell 7+,提供统一的容器环境用于执行SQL操作和PowerShell脚本,简化数据库相关任务的自动化与部署流程。
该镜像包含以下核心组件:
docker pull cilerler/microsoft-mssql-tools:latest
docker run -it --rm cilerler/microsoft-mssql-tools:latest pwsh
进入容器后,可直接使用sqlcmd:
sqlcmd -S your-server.database.windows.net -U your-username -P your-password -d your-database -Q "SELECT @@VERSION"
docker run --rm cilerler/microsoft-mssql-tools:latest pwsh -Command ` "sqlcmd -S 'your-server' -U 'your-username' -P 'your-password' -d 'your-database' -Q 'SELECT GETDATE()'"
首先挂载包含SQL脚本的本地目录:
docker run --rm -v ${PWD}:/scripts cilerler/microsoft-mssql-tools:latest pwsh -Command ` "sqlcmd -S 'your-server' -U 'your-username' -P 'your-password' -d 'your-database' -i /scripts/your-script.sql"
docker run --rm ` -e SQL_SERVER='your-server' ` -e SQL_USER='your-username' ` -e SQL_PASSWORD='your-password' ` -e SQL_DATABASE='your-database' ` cilerler/microsoft-mssql-tools:latest pwsh -Command ` "sqlcmd -S `$env:SQL_SERVER -U `$env:SQL_USER -P `$env:SQL_PASSWORD -d `$env:SQL_DATABASE -Q 'SELECT DB_NAME()'"
创建PowerShell脚本(db-operations.ps1):
# db-operations.ps1 $server = $env:SQL_SERVER $user = $env:SQL_USER $password = $env:SQL_PASSWORD $database = $env:SQL_DATABASE Write-Host "连接到 $server..." $result = sqlcmd -S $server -U $user -P $password -d $database -Q "SELECT COUNT(*) FROM sys.tables" -h -1 Write-Host "表数量: $result"
运行脚本:
docker run --rm ` -v ${PWD}:/scripts ` -e SQL_SERVER='your-server' ` -e SQL_USER='your-username' ` -e SQL_PASSWORD='your-password' ` -e SQL_DATABASE='your-database' ` cilerler/microsoft-mssql-tools:latest pwsh /scripts/db-operations.ps1
导出数据到文件:
docker run --rm -v ${PWD}:/data cilerler/microsoft-mssql-tools:latest pwsh -Command ` "bcp 'SELECT * FROM YourTable' queryout /data/output.dat -S 'your-server' -U 'your-username' -P 'your-password' -d 'your-database' -c"
从文件导入数据:
docker run --rm -v ${PWD}:/data cilerler/microsoft-mssql-tools:latest pwsh -Command ` "bcp YourTable in /data/input.dat -S 'your-server' -U 'your-username' -P 'your-password' -d 'your-database' -c"
若在Windows主机上运行本地SQL Server,从容器连接方法:
# 使用host.docker.internal引用Windows主机 docker run --rm cilerler/microsoft-mssql-tools:latest pwsh -Command ` "sqlcmd -S 'host.docker.internal' -U 'sa' -P 'YourPassword' -Q 'SELECT @@SERVERNAME'"
若SQL Server运行在Docker容器中:
# 创建网络 docker network create sql-network # 运行SQL Server(示例) docker run -d --name sqlserver --network sql-network ` -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=YourStrong@Password" ` mcr.microsoft.com/mssql/server:2022-latest # 在同一网络中运行mssql-tools容器 docker run --rm --network sql-network cilerler/microsoft-mssql-tools:latest pwsh -Command ` "sqlcmd -S 'sqlserver' -U 'sa' -P 'YourStrong@Password' -Q 'SELECT @@VERSION'"
创建docker-compose.yml:
version: '3.8' services: sqlserver: image: mcr.microsoft.com/mssql/server:2022-latest environment: ACCEPT_EULA: "Y" SA_PASSWORD: "YourStrong@Password" ports: - "1433:1433" sql-tools: image: cilerler/microsoft-mssql-tools:latest depends_on: - sqlserver environment: SQL_SERVER: sqlserver SQL_USER: sa SQL_PASSWORD: "YourStrong@Password" SQL_DATABASE: master volumes: - ./scripts:/scripts command: pwsh -Command "Start-Sleep -Seconds 10; sqlcmd -S $$env:SQL_SERVER -U $$env:SQL_USER -P $$env:SQL_PASSWORD -i /scripts/init.sql"
运行:
docker-compose up
steps: - task: Docker@2 displayName: '运行数据库迁移' inputs: command: 'run' arguments: > --rm -v $(Build.SourcesDirectory)/database:/scripts -e SQL_SERVER=$(SqlServer) -e SQL_USER=$(SqlUser) -e SQL_PASSWORD=$(SqlPassword) -e SQL_DATABASE=$(SqlDatabase) cilerler/microsoft-mssql-tools:latest pwsh /scripts/migrate.ps1
- name: 运行数据库脚本 run: | docker run --rm ` -v ${{ github.workspace }}/database:/scripts ` -e SQL_SERVER=${{ secrets.SQL_SERVER }} ` -e SQL_USER=${{ secrets.SQL_USER }} ` -e SQL_PASSWORD=${{ secrets.SQL_PASSWORD }} ` -e SQL_DATABASE=${{ secrets.SQL_DATABASE }} ` cilerler/microsoft-mssql-tools:latest ` pwsh /scripts/deploy.ps1 shell: pwsh
可在运行时安装SqlServer模块:
docker run -it --rm cilerler/microsoft-mssql-tools:latest pwsh -Command ` "Install-Module -Name SqlServer -Force -AllowClobber; Import-Module SqlServer; Invoke-Sqlcmd -ServerInstance 'your-server' -Username 'your-username' -Password 'your-password' -Query 'SELECT @@VERSION'"
# check-database.ps1 $ErrorActionPreference = "Stop" try { $result = sqlcmd -S $env:SQL_SERVER -U $env:SQL_USER -P $env:SQL_PASSWORD -Q "SELECT 1" -h -1 if ($LASTEXITCODE -eq 0) { Write-Host "连接成功!" exit 0 } else { Write-Error "连接失败,退出码: $LASTEXITCODE" exit 1 } } catch { Write-Error "错误: $_" exit 1 }
-S - 服务器名称或IP地址-U - 用户名(SQL Server身份验证)-P - 密码(SQL Server身份验证)-E - 使用Windows身份验证(Linux容器中不适用)-d - 数据库名称-Q - 执行查询后退出-i - 输入文件(SQL脚本)-o - 输出文件-h -1 - 移除输出中的标题-s - 列分隔符-W - 移除尾随空格-C - 信任服务器证书(用于加密连接)切勿在脚本或命令历史中硬编码密码,应使用环境变量或安全的密钥管理:
# 从环境变量读取 $password = $env:SQL_PASSWORD # 或在Swarm模式中使用Docker Secrets docker run --rm ` --secret sql-password ` cilerler/microsoft-mssql-tools:latest pwsh -Command ` "sqlcmd -S 'your-server' -U 'your-username' -P (Get-Content /run/secrets/sql-password) -Q 'SELECT 1'"
若连接失败,验证连接字符串:
docker run --rm cilerler/microsoft-mssql-tools:latest pwsh -Command ` "sqlcmd -S 'your-server' -U 'your-username' -P 'your-password' -Q 'SELECT 1' -C"
使用-C参数信任服务器证书(适用于加密连接)。
docker run --rm cilerler/microsoft-mssql-tools:latest pwsh -Command ` "sqlcmd -?; Write-Host '---'; pwsh --version"
如需本地构建该镜像:
# 克隆或创建Dockerfile后执行 docker build -t cilerler/microsoft-mssql-tools:latest .
本镜像基于Microsoft官方SQL Server工具镜像构建。有关sqlcmd和bcp实用工具的许可条款,请参阅Microsoft的许可条款。
欢迎提交issue和拉取请求以改进此镜像和文档。



免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429