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

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

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


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

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

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

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

相关推荐
zwjapple30 分钟前
docker-compose一键部署全栈项目。springboot后端,react前端
前端·spring boot·docker
tan180°2 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
代码老y3 小时前
Docker:容器化技术的基石与实践指南
运维·docker·容器
DuelCode3 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
优创学社23 小时前
基于springboot的社区生鲜团购系统
java·spring boot·后端
why技术4 小时前
Stack Overflow,轰然倒下!
前端·人工智能·后端
幽络源小助理4 小时前
SpringBoot基于Mysql的商业辅助决策系统设计与实现
java·vue.js·spring boot·后端·mysql·spring
ai小鬼头5 小时前
AIStarter如何助力用户与创作者?Stable Diffusion一键管理教程!
后端·架构·github
简佐义的博客5 小时前
破解非模式物种GO/KEGG注释难题
开发语言·数据库·后端·oracle·golang