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 目录中。

相关推荐
鹤落晴春2 小时前
RH124问答3:从命令行管理文件
linux·运维·服务器
guslegend2 小时前
大模型驱动大数据SRE智能运维
大数据·运维
遇见火星2 小时前
Docker Compose 完全入门:一键启动所有容器
运维·docker·容器·docker compose
小啊曼3 小时前
CIO实战方法论_11_组织变革打破部门墙
运维
❀搜不到3 小时前
远程服务器codex使用本地cc-switch的deepseek api
运维·服务器
虾壳云官方4 小时前
OpenClaw 2.7.9 Windows 一键部署教程:零基础也能搭建 AI 自动化助手
运维·人工智能·windows·自动化·openclaw·openclaw一键部署
江南风月4 小时前
WGCLOUD保姆级教程最新版整理
运维·zabbix·运维开发·prometheus·日志审计
志栋智能4 小时前
超自动化巡检:知识沉淀与团队协作的新载体
大数据·运维·网络·数据库·人工智能·自动化
vsropy6 小时前
Ubuntu网络图标消失问题/有网络问号
linux·运维·ubuntu
fofantasy6 小时前
NSK LH12AN 微型导轨技术手册
运维·网络·数据库·经验分享·规格说明书