Docker安装SQL Server并使用Navicat远程连接

Microsoft SQL Server(简称SQL Server)是由微软公司开发的关系数据库管理系统,它是一个功能强大、性能卓越的企业级数据库平台,用于存储和处理大型数据集、支持高效查询和分析等操作。SQL Server 支持广泛的应用程序开发接口(API),包括 T-SQL、ADO.NET、ODBC、OLE DB 等,并支持多种操作系统,包括 Windows、Linux 和 Docker 等。SQL Server 包含许多高级功能和组件,如数据仓库、分析服务、报告服务、全文搜索等,可为企业提供全面的数据管理和分析解决方案。

基于Ubuntu的Microsoft SQL Server官方镜像

mssql-server Docker hub:https://hub.docker.com/_/microsoft-mssql-server

拉取Microsoft SQL Server 根据自己需要的版本容器镜像

bash 复制代码
# 2017版本
docker pull mcr.microsoft.com/mssql/server:2017-latest
# 2019版本
docker pull mcr.microsoft.com/mssql/server:2019-latest
# 2022版本
docker pull mcr.microsoft.com/mssql/server:2022-latest
# 如果官方的慢不妨试试我这个
docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/server:2022-latest

创建并运行一个mssql容器

使用以下命令启动容器(Docker 镜像启动后,将会自动启动 SQL Server),其中 Y.sa123456 为 SQL Server sa 用户的密码:

这个命令的含义是在 Docker 中以后台模式 (-d) 运行 Microsoft SQL Server 2022 的最新版本 (mcr.microsoft.com/mssql/server:2022-latest) 镜像,并将容器命名为 mssql2022 (--name mssql2022)。同时,通过 -p 1433:1433 参数将容器的 1433 端口映射到主机的 1433 端口上,使得可以通过主机的 1433 端口访问 SQL Server。在容器启动过程中,需要设置两个环境变量:ACCEPT_EULA=Y 表示接受使用条款。MSSQL_SA_PASSWORD=Y.sa123456 表示设置 SA 用户的密码为 "Y.sa123456" [一定要注意密码一点要严格设置不然有坑]。

1. 官方Microsoft SQL Server 2022容器

bash 复制代码
# 运行官方SQL Server 2022容器
docker run -e "ACCEPT_EULA=Y" \
  -e "SA_PASSWORD=d4FmL7R5kCdmZtQq" \
  -p 1433:1433 \
  --name mssql2022 \
  -d mcr.microsoft.com/mssql/server:2022-latest

2. 阿里云镜像的SQL Server容器

bash 复制代码
# 先拉取阿里云镜像
docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/server:2022-latest

运行阿里云镜像的SQL Server容器

bash 复制代码
# 注意:需要使用不同的端口,避免与第一个容器冲突
docker run -e "ACCEPT_EULA=Y" \
  -e "SA_PASSWORD=d4FmL7R5kCdmZtQq" \
  -p 1434:1433 \
  --name mssql2022_aliyun \
  -d registry.cn-hangzhou.aliyuncs.com/qiluo-images/server:2022-latest

# 等待启动后连接
sleep 20
docker exec -it mssql2022_aliyun /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "d4FmL7R5kCdmZtQq"
# 等待启动后连接
sleep 20
docker exec -it mssql2022 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "d4FmL7R5kCdmZtQq"

以下适合正式

bash 复制代码
### 1. 创建数据目录并设置权限
# 创建数据目录
sudo mkdir -p /data/mssql

# 设置目录权限(Docker容器通常以mssql用户运行,UID=10001)
sudo chown -R 10001:0 /data/mssql
sudo chmod -R 770 /data/mssql
### 2. 运行带数据持久化的容器
docker run -e "ACCEPT_EULA=Y" \
  -e "SA_PASSWORD=d4FmL7R5kCdmZtQq" \
  -p 1434:1433 \
  --name mssql2022 \
  -v /data/mssql:/var/opt/mssql \
  -d registry.cn-hangzhou.aliyuncs.com/qiluo-images/server:2022-latest



参考文章

使用 Docker 运行 SQL Server Linux 容器映像:https://learn.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-docker?view=sql-server-ver16\&pivots=cs1-bash

  1. Docker Compose 方式(推荐用于生产)
    创建 docker-compose.yml 文件:
bash 复制代码
version: '3.8'

services:
  mssql:
    image: registry.cn-hangzhou.aliyuncs.com/qiluo-images/server:2022-latest
    container_name: mssql2022_aliyun
    hostname: mssql2022-aliyun
    restart: unless-stopped
    ports:
      - "1434:1433"
    environment:
      ACCEPT_EULA: "Y"
      MSSQL_SA_PASSWORD: "d4FmL7R5kCdmZtQq"
      MSSQL_PID: "Developer"
      MSSQL_AGENT_ENABLED: "true"
      MSSQL_COLLATION: "Chinese_PRC_CI_AS"
      TZ: "Asia/Shanghai"
    volumes:
      - /data/mssql/data:/var/opt/mssql/data
      - /data/mssql/log:/var/opt/mssql/log
      - /data/mssql/backup:/var/opt/mssql/backup
      - /data/mssql/secrets:/var/opt/mssql/secrets
    ulimits:
      nofile:
        soft: 65536
        hard: 65536
    deploy:
      resources:
        limits:
          memory: 4G
        reservations:
          memory: 2G

运行命令:

bash 复制代码
# 启动
docker-compose up -d
# 停止
docker-compose down
# 停止但不删除数据
docker-compose stop

注意事项:

权限问题:SQL Server容器默认以 mssql 用户运行(UID=10001),必须正确设置目录权限

数据安全:确保 /data/mssql 目录有适当的备份策略

性能考虑:将数据目录放在SSD磁盘上以获得更好的性能

备份:定期备份 /data/mssql 目录,或使用SQL Server的备份功能备份到 /data/mssql/backup 目录

这样配置后,您的所有数据库数据都会持久化保存在宿主机的 /data/mssql 目录中。

相关推荐
Web极客码8 分钟前
2026年Linux VPS安全加固清单:SSH、防火墙与审计就绪配置
运维·服务器·数据库
星恒讯工业路由器38 分钟前
配网自动化多网融合应用解决方案
运维·自动化
智慧物业老杨44 分钟前
智慧物业收费系统的数智化落地实践:从人工硬扛到自动化闭环
运维·自动化
techdashen1 小时前
Cloudflare 为何抛弃 NGINX,用 Rust 自研了一个代理
运维·nginx·rust
南城猿1 小时前
保姆级 Ubuntu 部署 禅道
linux·运维·ubuntu
珠海西格电力2 小时前
零碳园区产业园管理系统的全场景源网荷储氢协同调度功能是如何实现的
大数据·运维·人工智能·物联网·能源
木雷坞2 小时前
K8s GPU 推理服务 ImagePullBackOff 排查与预热
云原生·容器·kubernetes·gpu算力
wj3055853782 小时前
CC-Switch 在 WSL Ubuntu 中安装记录
linux·运维·ubuntu
人生匆匆3 小时前
通过nginx解决跨域问题
运维·nginx
原来是猿3 小时前
【Socket编程预备知识】
linux·运维·服务器·网络