【docker随笔系列】安装sqlserver

先决条件

  • 任何受支持的 Linux 分发或用于 Mac/Windows 的 Docker 上的 Docker 引擎 1.8+。 有关详细信息,请参阅 Install Docker(安装 Docker)。
  • Docker overlay2 存储驱动程序。 这是大多数用户的默认设置。 如果发现自己未使用此存储提供程序并且需要进行更改,请参阅 docker 文档中有关配置 overlay2 的说明和警告。
  • 至少 2 GB 的磁盘空间。
  • 至少 2 GB 的 RAM。
  • Linux 上的 SQL Server 的系统要求

拉取并运行容器映像

在开始执行以下步骤之前,请确保已在本文顶部选择了首选的 shell(bash、PowerShell 或 cmd)。

  1. 从 Microsoft 容器注册表中拉取 SQL Server 2017 Linux 容器映像。

sudo docker pull mcr.microsoft.com/mssql/server:2017-latest
  1. 前一个命令请求最新的 SQL Server 2017 容器映像。 如果想请求某个特定映像,需添加一个冒号和标记名称(例如 mcr.microsoft.com/mssql/server:2017-GA-ubuntu。 若要查看所有可用映像,请参阅 mssql-server Docker hub 页

    对于本文中的 bash 命令,将使用 sudo。 在 MacOS 上,可能不需要 sudo。 在 Linux 上,如果不想使用 sudo 来运行 Docker,可以配置一个 docker 组,并将用户添加到该组。 有关详细信息,请参阅 Post-installation steps for Linux(适用于 Linux 的安装后步骤)。

  2. 要使用 Docker 运行容器映像,可以从 Bash Shell (Linux/macOS) 或提升的 PowerShell 命令提示符使用以下命令。

sudo docker run --restart always -e ACCEPT_EULA=Y -e MSSQL_SA_PASSWORD=password -e MSSQL_PID=Developer -p 1333:1433 --name sql2017 -v /data/sqlserver2017_data:/var/opt/mssql -d microsoft/mssql-server-linux

 备注

密码应符合 SQL Server 默认密码策略,否则容器无法设置 SQL Server,将停止工作。 默认情况下,密码的长度必须至少为 8 个字符,并且必须包含以下四种字符中的三种:大写字母、小写字母、十进制数字和符号。 你可以通过执行 docker logs 命令检查错误日志。

 备注

默认情况下,这会创建一个使用 SQL Server 2017 开发人员版的容器。 在容器中运行生产版本的过程略有不同。 有关详细信息,请参阅运行生产容器映像

下表对前一个 docker run 示例中的参数进行了说明:

表 1

参数说明
-e "ACCEPT_EULA=Y"将 ACCEPT_EULA 变量设置为任意值,以确认接受最终用户许可协议。 SQL Server 映像的必需设置。
-e "SA_PASSWORD=<YourStrong@Passw0rd\>"指定至少包含 8 个字符且符合 SQL Server 密码要求的强密码。 SQL Server 映像的必需设置。
-p 1433:1433将主机环境中的 TCP 端口(第一个值)映射到容器中的 TCP 端口(第二个值)。 在此示例中,SQL Server 侦听容器中的 TCP 1433,并对主机上的端口 1433 公开。
--name sql1为容器指定一个自定义名称,而不是使用随机生成的名称。 如果运行多个容器,则无法重复使用相同的名称。
-d mcr.microsoft.com/mssql/server:2017-latestSQL Server 2017 Linux 容器映像。

注:

-v /data/sqlserver2017_data:/var/opt/mssql 表示将docker的/var/opt/mssql挂载到宿主机的/data/sqlserver2017_data目录

要查看 Docker 容器,请使用 docker ps 命令。

sudo docker ps -a

如果“状态”列显示“正常运行”,则 SQL Server 将在容器中运行,并侦听“端口”列中指定的端口 。 如果 SQL Server 容器的“状态”列显示“已退出”,则参阅配置指南的疑难解答部分 。

连接到 SQL Server

下列步骤在容器内部使用 SQL Server 命令行工具 sqlcmd 来连接 SQL Server。

  1. 使用 docker exec -it 命令在运行的容器内部启动交互式 Bash Shell。 在下面的示例中,sql1 是在创建容器时由 --name 参数指定的名称。

sudo docker exec -it sql2017 "bash"

 

坑:

一定要挂载/var/opt/mssql目录到宿主机,这样就可以使用SQL Server Management Studio连接数据库备份还原,否则各种权限坑。

 

 

 

参考文档:

https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-docker?view=sql-server-2017&pivots=cs1-bash

相关文章