Docker安装sql server(x86,arm)

我正在参加「金石计划5.0」

一、2022版x86架构

1.拉取镜像

  • x86架构
sh 复制代码
docker pull mcr.microsoft.com/mssql/server:2022-latest

看你要拉取的版本,可以将2022改成其他版本即可。

2.运行容器

  • x86架构
sh 复制代码
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Llsydn123!@#" -e "TZ=Asia/Shanghai" -p 1433:1433 --name sqlserver2022 -d mcr.microsoft.com/mssql/server:2022-latest

参数解释:

-e "ACCEPT_EULA=Y":默认选择同意协议许可证

-e "SA_PASSWORD=Llsydn123!@#": 设置连接密码

-e "TZ=Asia/Shanghai":表示调整容器内部的时区,以免时间出现相差8个小时的问题。

-p 1433:1433: 宿主机端口映射到容器端口(前者为宿主机)

--name sqlserver2022:容器别名

-d: 后台运行

mcr.microsoft.com/mssql/server:2022-latest:镜像名称:标签

-v /etc/sqlserver_data:/var/opt/mssql: 表示/etc/sqlserver_data目录挂载到容器的/var/opt/mssql目录,这个目录是用来存储数据库文件的,所以最好挂载到容器外部,避免因为不小心删除容器而丢失数据。

3.进入容器

1)进入容器

sh 复制代码
docker exec -it sqlserver2022 /bin/bash

2)连接数据库

sh 复制代码
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'Llsydn123!@#'

3)查询数据库

sh 复制代码
select name from sys.Databases
go

4)创建数据库

go 复制代码
create database sqlserver2022_db
go

可以看到我们成功的创建好了一个数据库。

4.远程连接

  • 使用dbeaver进行连接
  • 创建一张表

对应的sql语句如下:

sql 复制代码
CREATE TABLE sqlserver2022_db.dbo.t_user (
    id bigint IDENTITY(0,1) NOT NULL,
    username varchar(100) NULL,
    password varchar(100) NULL
);
  • 查看sql版本
  • x86
sql 复制代码
SELECT @@VERSION;

SELECT SERVERPROPERTY('ProductVersion'), SERVERPROPERTY ('ProductLevel'), SERVERPROPERTY ('Edition');
txt 复制代码
Microsoft SQL Server 2022 (RTM-CU5) (KB5026806) - 16.0.4045.3 (X64) 
	May 26 2023 12:52:08 
	Copyright (C) 2022 Microsoft Corporation
	Developer Edition (64-bit) on Linux (Ubuntu 20.04.6 LTS) <X64>
txt 复制代码
16.0.4045.3	RTM	Developer Edition (64-bit)

二、2017版arm架构

1.拉取镜像

  • arm架构
sh 复制代码
docker pull sgleinig/mssql-server-linux:2017-latest-data-1

2.运行容器

  • arm架构
sh 复制代码
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=Llsydn123!@#" -e "TZ=Asia/Shanghai" -p 1433:1433 --name sqlserver2017 -d sgleinig/mssql-server-linux:2017-latest-data-1

和x86差不多,只是指定密码的配置参数,不太一样。

-e "MSSQL_SA_PASSWORD=Llsydn123!@#" : 设置连接密码

3.进入容器

1)进入容器

sh 复制代码
docker exec -it sqlserver2017 /bin/bash

2)连接数据库

sh 复制代码
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'Llsydn123!@#'

3)查询数据库

sh 复制代码
select name from sys.Databases
go

4)创建数据库

sh 复制代码
create database sqlserver2017_db
go

可以看到我们成功的创建好了一个数据库。

4.远程连接

  • 使用dbeaver进行连接
  • 创建一张表
sql 复制代码
CREATE TABLE sqlserver2017_db.dbo.t_user (
	id bigint IDENTITY(0,1) NOT NULL,
	username varchar(100) NULL,
	password varchar(100) NULL
);
  • 查看sql版本
  • arm
txt 复制代码
Microsoft SQL Server 2017 (RTM-CU5) (KB4092643) - 14.0.3023.8 (X64) 
    Mar  2 2018 18:24:44 
    Copyright (C) 2017 Microsoft Corporation
    Developer Edition (64-bit) on Linux (Ubuntu 16.04.4 LTS)
txt 复制代码
14.0.3023.8 RTM Developer Edition (64-bit)

注意:

该镜像sgleinig/mssql-server-linux:2017-latest-data-1,是arm架构的,但是在arm64下面是无法运行的。

做到最后,我吐了呀,结果发现,这个镜像还是没有用。😁(●'◡'●)

大家伙,轻点喷!!!

4.写在最后

说实话,arm64架构的sqlserver镜像,我跑了很多个,结果都是运行不起来。

不知道有无大神可以指点一二,指点一二就行,不用三四。

用了网上那些arm64架构的sqlserver镜像,例如这个:docker pull mcr.microsoft.com/azure-sql-edge:latest --platform=arm64

在window下运行,会报下面这个错:

说是架构不匹配,但是我在linux(arm64)下面也是不行呀,吐了!!!

在linux下运行,会报下面这个错:

sh 复制代码
<jemalloc>: Unsupported system page size
Out of memory allocating bitmask: Cannot allocate memory

基本上都是这个错,一时之间都无从下手。

不知道有无大神可以指点一二,指点一二就行,不用三四了。(●'◡'●)


好了,以上就是我个人的实操了。可能有些不对,大家伙,轻点喷!!!

个人理解,可能也不够全面,班门弄斧了。

好了,今天就先到这里了!!!^_^

如果觉得有收获的,帮忙点赞、评论、收藏一下,再走呗!!!

相关推荐
雨中飘荡的记忆4 分钟前
Multi-Agent + Skills + Spring AI 构建自主决策智能体
后端·spring
我叫黑大帅43 分钟前
Go 语言并发编程的 “工具箱”
后端·面试·go
用户8356290780511 小时前
Python 实现 PowerPoint 形状动画设置
后端·python
用户908324602732 小时前
Spring Boot 缓存架构:一行配置切换 Caffeine 与 Redis,透明支持多租户隔离
后端
tyung2 小时前
zhenyi-base 开源 | Go 高性能基础库:TCP 77万 QPS,无锁队列 16ns/op
后端·go
子兮曰2 小时前
Humanizer-zh 实战:把 AI 初稿改成“能发布”的技术文章
前端·javascript·后端
桦说编程2 小时前
你的函数什么颜色?—— 深入理解异步编程的本质问题(上)
后端·性能优化·编程语言
百度地图汽车版3 小时前
【AI地图 Tech说】第九期:让智能体拥有记忆——打造千人千面的小度想想
前端·后端
臣妾没空3 小时前
Elpis 全栈框架:从构建到发布的完整实践总结
前端·后端
喷火龙8号3 小时前
单 Token 认证方案的进阶优化:透明刷新机制
后端·架构