37aa5dc36d88444786b6b543845963ba

✅ 命令回顾

1
2
3
4
5
6
7
8
docker run \
-e 'ACCEPT_EULA=Y' \
-e 'MSSQL_SA_PASSWORD=<password>' \
-p 1433:1433 \
-v <host directory>/data:/var/opt/mssql/data \
-v <host directory>/log:/var/opt/mssql/log \
-v <host directory>/secrets:/var/opt/mssql/secrets \
-d mcr.microsoft.com/mssql/server:2022-latest

🔍 各参数详解

1. `docker run`

  • 作用:启动一个新的容器。
  • 说明:这是 Docker 的基础命令,用于从镜像创建并运行一个容器。

2. `-e 'ACCEPT_EULA=Y'`

  • 作用:设置环境变量,表示接受 Microsoft SQL Server 的最终用户许可协议(EULA)。
  • 说明:如果不设置这个变量,SQL Server 容器将不会启动。

3. `-e 'MSSQL_SA_PASSWORD='`

  • 作用:设置 SQL Server 的系统管理员账户(sa)密码。
  • 注意
    • 密码必须满足 SQL Server 的复杂性要求(至少 8 字符、大小写字母、数字和符号)。
    • <password> 需要替换为你自己的强密码。

4. `-p 1433:1433`

  • 作用:端口映射,将主机的 1433 端口映射到容器内部的 1433 端口。
  • 说明
    • SQL Server 默认监听端口是 1433。
    • 这样你就可以通过 localhost:1433 或服务器 IP 地址访问 SQL Server。

5. `-v /data:/var/opt/mssql/data`

  • 作用:将主机上的目录挂载为容器内的 SQL Server 数据文件存储路径。
  • 说明
    • /var/opt/mssql/data 是 SQL Server 存放数据库 .mdf.ldf 文件的位置。
    • 使用 -v 挂载可以实现数据持久化,即使容器被删除,数据也不会丢失。

6. `-v /log:/var/opt/mssql/log`

  • 作用:挂载日志目录。
  • 说明
    • 用于持久化 SQL Server 的错误日志和其他日志信息。
    • 方便调试和查看运行时的日志内容。

7. `-v /secrets:/var/opt/mssql/secrets`

  • 作用:挂载密钥目录。
  • 说明
    • SQL Server 在此目录中存储加密密钥等敏感信息。
    • 如果你不挂载这个卷,每次重新创建容器时,密钥会重置,可能导致数据库无法正确恢复。

8. `-d`

  • 作用:以“分离模式”运行容器(后台运行)。
  • 说明:容器将在后台运行,不会占用当前终端。

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

  • 作用:指定使用的镜像及其标签。
  • 说明
    • 这是官方提供的 SQL Server for Linux 容器镜像。
    • 2022-latest 表示使用 SQL Server 2022 的最新版本。
    • 你可以根据需要换成其他版本,如 2019-latest2022-GA 等。

🧠 总结与建议

功能 是否推荐
接受 EULA ✅ 必须
设置 SA 密码 ✅ 必须
映射端口 ✅ 必须
持久化数据 ✅ 强烈推荐
持久化日志 ✅ 推荐
持久化 secrets ✅ 推荐(尤其用于生产或长期运行)

💡 示例替换后的完整命令(请修改路径和密码)

1
2
3
4
5
6
7
8
docker run \
-e 'ACCEPT_EULA=Y' \
-e 'MSSQL_SA_PASSWORD=MyStrongP@ssw0rd!' \
-p 1433:1433 \
-v /opt/mssql/data:/var/opt/mssql/data \
-v /opt/mssql/log:/var/opt/mssql/log \
-v /opt/mssql/secrets:/var/opt/mssql/secrets \
-d mcr.microsoft.com/mssql/server:2022-latest