如何在ubuntu[linux] 上用docker安装Sqlserver
本次按照目前最新版本Sqlserver2022进行记录
先决条件
- 任何受支持的 Linux 发行版上的 Docker 引擎 1.8 及更高版本。 有关详细信息,请参阅 Install Docker(安装 Docker)。
- 有关硬件要求和处理器支持的详细信息,请参阅SQL Server 2022:硬件和软件要求
Docker
overlay2存储驱动程序。 此驱动程序是大多数用户的默认设置。 如果你未使用此存储提供程序并且需要进行更改,请参阅有关配置 overlay2 的 Docker 文档中的说明和警告。在 Docker 主机上安装最新的 sqlcmd。
至少 2 GB 的磁盘空间。
至少 2 GB 的 RAM。
从注册表拉取容器
从 Microsoft 容器注册表中请求 SQL Server 2022 (16.x) Linux 容器映像。
sudo docker pull mcr.microsoft.com/mssql/server:2022-latest
运行容器
要使用 Docker 运行 Linux 容器映像,可以从 Bash Shell 或提升的 PowerShell 命令提示符使用以下命令。
sudo docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=密码" \
-p 1433:1433 --name sql1 --hostname sql1 \
-d \ -v /data/mssql:/var/opt/mssql
mcr.microsoft.com/mssql/server:2022-latest
密码应符合 SQL Server 默认密码策略,否则容器无法设置 SQL Server,会停止工作。 默认情况下,密码必须为至少八个字符且包含以下四种字符中的三种:大写字母、小写字母、十进制数字、符号。 可使用 docker logs 命令检查错误日志。
默认情况下,本快速入门会创建一个使用 SQL Server 开发人员版的容器。 在容器中运行生产版本的过程略有不同。 有关详细信息,请参阅运行生产容器映像。
下表对前一个 docker run 示例中的参数进行了说明:
| 参数 | 说明 |
|---|---|
-e "ACCEPT_EULA=Y" |
将 ACCEPT_EULA 变量设置为任意值,以确认接受最终用户许可协议。 SQL Server 映像的必需设置。 |
-e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" |
指定至少包含 8 个字符且符合密码策略的强密码。 SQL Server 映像的必需设置。 |
-e "MSSQL_COLLATION=<SQL_Server_collation>" |
指定自定义 SQL Server 排序规则,而不使用默认值 SQL_Latin1_General_CP1_CI_AS。 |
-p 1433:1433 |
将主机环境中的 TCP 端口(第一个值)映射到容器中的 TCP 端口(第二个值)。 在此示例中,SQL Server 侦听容器中的 TCP 1433,此容器端口随后会对主机上的 TCP 端口 1433 公开。 |
--name sql1 |
为容器指定一个自定义名称,而不是使用随机生成的名称。 如果运行多个容器,则无法重复使用相同的名称。 |
--hostname sql1 |
用于显式设置容器主机名。 如果未指定主机名,则主机名默认为容器 ID,这是随机生成的系统 GUID。 |
-d |
在后台运行容器(守护程序)。 |
-v |
将文件挂载到 本机路径/data/mssql |
mcr.microsoft.com/mssql/server:2022-latest |
SQL Server Linux 容器映像。 |
更改系统管理员密码
SA 帐户是安装过程中在 SQL Server 实例上创建的系统管理员。 创建 SQL Server 容器后,可以通过在容器中运行 echo $MSSQL_SA_PASSWORD 来发现指定的 MSSQL_SA_PASSWORD 环境变量。 为了安全起见,应在生产环境中更改 SA 密码。
选择 SA 用户要使用的强密码。
使用
docker exec运行sqlcmd,以使用 Transact-SQL 更改密码。 以下示例将从用户输入中读取旧密码和新密码。sudo docker
exec
-it sql1 /opt/mssql-tools/bin/sqlcmd \
-S localhost -U SA \
-P "$(read -sp "Enter current SA password: "; echo "${REPLY}")" \
-Q "ALTER LOGIN SA WITH PASSWORD=\"$(read -sp "Enter new SA password: "; echo "${REPLY}")\""
连接到 SQL Server
下列步骤在容器内部使用 SQL Server 命令行工具 sqlcmd 实用程序 来连接 SQL Server。
使用
docker exec -it命令在运行的容器内部启动交互式 Bash Shell。 在下面的示例中,sql1是在创建容器时由--name参数指定的名称。sudo docker exec -it sql1 "bash"
- 在容器内部使用完整路径通过 sqlcmd 进行本地连接。
sudo /opt/mssql-tools/bin/sqlcmd -S localhost -U <userid> -P "<YourNewStrong@Passw0rd>"
备注
默认情况下,较新版本的 sqlcmd 是安全的。 有关连接加密的详细信息,请参阅 sqlcmd 实用工具(对于 Windows)和使用 sqlcmd 进行连接(对于 Linux 和 macOS)。 如果连接不成功,则可以将
-No选项添加到 sqlcmd,以指定加密是可选的,而不是强制性的。可以省略命令行上提示要输入的密码。 例如:
sudo /opt/mssql-tools/bin/sqlcmd -S localhost -U <userid>
如果成功,应会显示 sqlcmd 命令提示符:
1>。
创建和查询数据
以下部分将引导你使用 sqlcmd 和 Transact-SQL 完成新建数据库、添加数据并运行查询的整个过程。
新建数据库
以下步骤创建一个名为 TestDB 的新数据库。
在 sqlcmd 命令提示符中,粘贴以下 Transact-SQL 命令以创建测试数据库:
CREATE DATABASE TestDB;
在下一行中,编写一个查询以返回服务器上所有数据库的名称:
SELECT Name from sys.databases;
前两个命令没有立即运行。 在新行中键入
GO以运行前面的命令:GO
插入数据
接下来创建一个新表 Inventory,然后插入两个新行。
在 sqlcmd 命令提示符中,将上下文切换到新的
TestDB数据库:USE TestDB;
创建名为
Inventory的新表:CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT);
将数据插入新表:
INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
键入
GO运行上述命令:GO
选择数据
现在,运行查询以从 Inventory 表返回数据。
通过 sqlcmd 命令提示符输入查询,以返回
Inventory表中数量大于 152 的行:SELECT * FROM Inventory WHERE quantity > 152;
运行以下命令:
GO
退出 sqlcmd 命令提示符
要结束 sqlcmd 会话,请键入
QUIT:QUIT
要在容器中退出交互式命令提示,请键入
exit。 退出交互式 Bash Shell 后,容器将继续运行。
删除容器
sudo docker stop sql1 sudo docker rm sql1
如何在ubuntu[linux] 上用docker安装Sqlserver的更多相关文章
- 如何在Ubuntu Linux上安装Oracle Java
不错文档,希望地址永久可用,url:http://zh.wikihow.com/%E5%9C%A8Ubuntu-Linux%E4%B8%8A%E5%AE%89%E8%A3%85Oracle-Java
- Mac上使用Docker安装SQLServer
拉取 SQL Server 2017 Docker 镜像 docker pull microsoft/mssql-server-linux:2017-latest 运行Docker镜像 docker ...
- 怎样在 Ubuntu Linux 上安装 MySQL
本教程教你如何在基于 Ubuntu 的 Linux 发行版上安装 MySQL.对于首次使用的用户,你将会学习到如何验证你的安装和第一次怎样去连接 MySQL. -- Sergiu MySQL 是一个典 ...
- 如何在Windows 10上运行Docker和Kubernetes?
如何在Windows 10上运行Docker和Kubernetes? 在Windows上学习Docker和Kubernetes,开始的时候会让你觉得无从下手.最起码安装好这些软件都不是一件容易的事情. ...
- windows上面链接使用linux上面的docker daemon
1. 修改linux 上面的 docker的 配置文件. vim /usr/lib/systemd/system/docker.service 注意 这个是centos的路径 发现ubuntu的路径不 ...
- 怎么在Linux上下载并安装ESET NOD32 Antivirus 4桌面版
转自:怎么在Linux上下载并安装ESET NOD32 Antivirus 4桌面版 下载并安装ESET NOD32 Antivirus 4的Linux桌面版,根据下面的步骤一步一步的来: I. 下 ...
- Linux上用mvn安装node.js
Linux上用mvn安装node.js 上一篇blog简略的讲了ubuntu系统的安装,接下来讲讲Ubuntu上的基于node.js的web开发环境的搭建. Node在快速构建网络服务有着极大的优势, ...
- 在centos7上用docker安装宝塔面板
在centos7上用docker安装宝塔面板 1. [root@web01 ~]# systemctl enable docker 2. [root@web01 ~]# docker pull c ...
- 如何在windows10家庭版上搭建docker
如何在windows10家庭版上搭建docker 建议先跳到最后一条,看完之后再决定是否安装. 0X00搭建原因 首先搭docker的想法是我在复现漏洞时候,发现大佬们的复现环境都是基于docker的 ...
- Linux上的软件安装有哪些方式?
Linux上的软件安装有以下几种常见方式介绍 1.二进制发布包 软件已经针对具体平台编译打包发布,只要解压,修改配置即可 2.RPM包 软件已经按照redhat的包管理工具规范RPM进行打包发布,需要 ...
随机推荐
- 构造SLR语法分析表
构造SLR语法分析表 方法: 1)构造G'的规范LR(0)项集族 2)根据规则生成动作 3)生成转换 4)设置报错 /** * P157 规范LR(0)项集族 * @param grammar */ ...
- 使用 Visual Studio 调试器附加到正在运行的进程
使用 Visual Studio 调试器附加到正在运行的进程 使用场景 当项目在测试环境上有bug,需要运行代码调试一下,这时就需要在测试环境上安装一个调试工具,然后在本地运行代码,远程链接到测试环境 ...
- C# 之 Int16 Int32 Int64 的区别-迷恋自留地
int16 值类型表示值介于 -32768 到 +32767 之间的有符号整数. Int32 值类型表示值介于 -2,147,483,648 到 +2,147,483,647 之间的有符号整数. In ...
- 内网穿透之http代理服务器
在公网访问内网http服务可以用内网穿透工具,例如frp和nps等优秀工具.但我发现这类工具会在服务器启动不止一个端口,对于有些网络审查来说很容易发现在进行内网穿透.因此我想是否可以只在服务器启动一个 ...
- ngrx 4: 创建 ngrx 4.x 项目
创建 @ngrx 4.x 项目 @ngrx 4.x 相比上一个版本有了一些变化,该文介绍了如何在 Angular 中集成 @ngrx r.x 实现状态管理. 一.创建基本项目 使用 Angular C ...
- Spring源码阅读(一):使用IDEA搭建Spring5.0.x源码阅读环境
说明 Spring源码阅读环境配置如下: Spring 5.x版本 Gradle 4.8.1 JDK8 IDEA2020.1 win10 搭建步骤 1. 下载Spring源码 下载地址:Github链 ...
- MessageConsumer
@Slf4j @Component public class MessageConsumer { @Autowired private PpcRequestMessageListener ppcReq ...
- Idea 避免import *
File -> setting -> Editor -> Code Style -> Java -> Imports
- postgresql-10.12-2-windows-x64安装成功后在安装postgis-bundle-pg96x64-setup-2.5.3-1时提示Spatial database creation failed
问题描述: postgresql-10.12-2-windows-x64安装成功后在安装postgis-bundle-pg96x64-setup-2.5.3-1时提示Spatial database ...
- WorldWind源码剖析系列:漫游时四叉树瓦片类QuadTile的运行思路
用户在窗口漫游时,需要加载精细的高程和纹理数据时的处理思路:当用户漫游时直到窗口相机的视场角的1/2小于(瓦片大小*瓦片绘制距离的乘积)时,才初始化四叉树瓦片类QuadTile,或者加载本地缓存中的数 ...