docker 容器化部署sql server2022 (数据持久化部署)

06-01 1072阅读

一,部署测试系统环境

操作系统:Rocky Linux 9.1

Docker version: 20.10.22, build 3a2c30b

Docker Compose version: v2.27.0

资源要求参考官方说明:Docker:安装适用于 Linux 上的 SQL Server 的容器 - SQL Server | Microsoft Learn

docker 容器化部署sql server2022 (数据持久化部署)

二,镜像获取

microsoft官方数据源获取:docker pull mcr.microsoft.com/mssql/server:2022-latest

三,部署前工作准备

3.1 新建数据目录:用于数据持久化

建立数据目录:mkdir -p /home/sql/sqlserver/data

确保 Docker 守护进程有权限访问该目录:chmod -R 777 /home/sql/sqlserver/data

3.2 端口开放

sql sqlserver默认使用端口:1433 ,容器内运行时需使用此端口。容器内其他镜像不能使用这个端口。

容器外可以配置1433映射到容器内1433。亦可配置其他端口映射比如:5433:1433。容器外分配的端口也不能被其他服务占用。

分配好端口后需在防火墙上开启(开放宿主机端口):

sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
sudo firewall-cmd --reload

四,部署

4.1,docker直接容器运行

4.1.1容器建立运行命令

docker run --restart=always \
   -v /home/sql/sqlserver/data:/var/opt/mssql \
   -e 'ACCEPT_EULA=Y' \
   -e "MSSQL_SA_PASSWORD=" \
   -p 1433:1433 \
   --name sqlserver \
   -d mcr.microsoft.com/mssql/server:2022-latest

4.1.2参数说明

--restart=always:设置容器的重启策略为“始终”,即容器停止时会自动重启。

-v /home/sql/sqlserver/data:/var/opt/mssql:将主机的 `/home/sql/sqlserver/data` 目录挂载到容器的 `/var/opt/mssql` 目录,实现数据持久化。

-e 'ACCEPT_EULA=Y':设置环境变量,接受 SQL Server 的最终用户许可协议。

-e "MSSQL_SA_PASSWORD=":设置环境变量,指定 SQL Server 的系统管理员(SA)账户密码。请将 `` 替换为实际的密码。

-p 1433:1433:将主机的 1433 端口映射到容器的 1433 端口,允许外部通过该端口访问 SQL Server 服务。

--name sqlserver:为容器指定名称为 `sqlserver`,方便后续管理。

-d:以后台模式运行容器,即容器启动后不会占用当前终端。

mcr.microsoft.com/mssql/server:2022-latest:指定使用 Microsoft 的官方 SQL Server 2022 镜像的最新版本。

4.1.3 查询容器状态

运行命令:docker ps -a 

结果:

docker 容器化部署sql server2022 (数据持久化部署)

状态显示为UP 即为正常,其他状态需排查日志

docker logs sqlserver 

根据日志内容排查相关问题。

4.2 docker-compose 容器编排

4.2.1 建立docker-compose 编排文件

services:
  sqlserver:
    image: mcr.microsoft.com/mssql/server:2022-latest
    container_name: sqlserver
    hostname: sqlserver
    environment:
      ACCEPT_EULA: "Y"
      MSSQL_SA_PASSWORD: "yourpassword"
      MSSQL_COLLATION: "Chinese_PRC_CI_AS"
    ports:
      - "1433:1433"
    volumes:
      - /home/sql/sqlserver/data:/var/opt/mssql/data
      - /home/sql/sqlserver/data/log:/var/opt/mssql/log
      - /home/sql/sqlserver/data/backup:/var/opt/mssql/backup
    restart: always

4.2.2 参数说明

### 1. **`image`**

   - `image: mcr.microsoft.com/mssql/server:2022-latest`

     - 该字段指定使用的 Docker 镜像。这里使用的是 Microsoft 提供的 SQL Server 2022 最新版本镜像。

### 2. **`container_name`**

   - `container_name: sqlserver`

     - 该字段指定容器的名称。您可以使用 `sqlserver` 来引用该容器。

### 3. **`hostname`**

   - `hostname: sqlserver`

     - 容器内的主机名,通常用于容器之间的通信,或者在配置文件中作为容器的标识。

### 4. **`environment`**

   - `ACCEPT_EULA: "Y"`

     - 设置 SQL Server 的许可协议(EULA)为已接受,必须设置为 "Y" 来接受许可协议。

   - `MSSQL_SA_PASSWORD: "yourpassword"`

     - 设置 SQL Server 系统管理员(SA)账户的密码。必须符合密码复杂性要求,通常需要至少 8 个字符,包括大写字母、小写字母、数字以及特殊字符。

   - `MSSQL_COLLATION: "Chinese_PRC_CI_AS"`

     - 设置 SQL Server 的排序规则(collation),这里设置为支持中文的 `Chinese_PRC_CI_AS`,即中国地区的大小写不敏感、区分重音的排序规则。

### 5. **`ports`**

   - `ports: - "1433:1433"`

     - 将容器的 1433 端口映射到宿主机的 1433 端口,这样外部可以通过宿主机的 1433 端口连接到 SQL Server 实例。

### 6. **`volumes`**

   - `- /home/sql/sqlserver/data:/var/opt/mssql/data`

     - 将宿主机的 `/home/sql/sqlserver/data` 目录挂载到容器的 `/var/opt/mssql/data` 目录,这用于持久化 SQL Server 数据文件(例如 `master.mdf` 等)。

   - `- /home/sql/sqlserver/data/log:/var/opt/mssql/log`

     - 将宿主机的 `/home/sql/sqlserver/data/log` 目录挂载到容器的 `/var/opt/mssql/log` 目录,这用于存储 SQL Server 的日志文件。

   - `- /home/sql/sqlserver/data/backup:/var/opt/mssql/backup`

     - 将宿主机的 `/home/sql/sqlserver/data/backup` 目录挂载到容器的 `/var/opt/mssql/backup` 目录,这用于存储 SQL Server 的备份文件。

### 7. **`restart`**

   - `restart: always`

     - 配置容器在停止后自动重启。`always` 表示容器无论因为什么原因停止,都会自动重启。

4.2.3 容器启动

配置目录下运行:docker-compose up -d

使用命令:docker ps -a 查看服务运行状态,如图为正常。

docker 容器化部署sql server2022 (数据持久化部署)

其他状态查看日志排查:

docker logs sqlserver

五,注意事项(比较重要)

以上操作均为测试环境测试结果,生成环境建议咨询DBA 后,在进行操作。

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码