应无所住,而生其心
排名
1
文章
860
粉丝
112
评论
163
net core webapi post传递参数
庸人 : 确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

docker安装sqlserver,并破解内存2g限制,与内部使用bak还原数据

12119人阅读 2021/11/18 10:38 总访问:5194269 评论:3 收藏:0 手机
分类: docker


一:拉取镜像

  1. docker pull mcr.microsoft.com/mssql/server:2017-latest


二.创建容器

  1. docker run  -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Mm@123456" -p 1433:1433  
  2. --memory 2000M --name sqlserver -d mcr.microsoft.com/mssql/server:2017-latest


命令详解:

-e "ACCEPT_EULA=Y" :
代表同意SQL SERVER使用条框,否则无法使用。注意双引号

-e "MSSQL_SA_PASSWORD=Mm@123456"  :
设置SA用户的密码,要求密码长度必须至少为8个字符,并包含以下四组中的三组字符:大写字母、小写字母、以10为基数的数字和符号。注意密码强度不够,会出现容器启动就停止,密码需要大小写字母+数字+特殊符号

-p 1433:1433  :
将宿主机1443与容器1443端口进行映射

--memory 2000M :
sqlserver 的容器运行时,内存要>=2000MB,所以创建容器的时候可以设置一下

-d 后台运行


三.破解docker安装sqlserver内存2g限制


我们使用docker run之后会发现容器根本跑不起来,使用docker logs <containerid> 查看日志会看到:
sqlservr: This program requires a machine with at least 2000 megabytes of memory.
也就是可用内存没有2g所以报错,启动不了。


破解思路:把内存限制被修改为 512m在启动即可
正常情况下我们可以进入docker内部去修改文件,但是这里由于启动不了docker容器,所以也就进不去,我们可以把docker内部的文件复制到宿主机,修改后在复制回去宿主机即可。当然也可以挂载docker内部的文件在宿主机这样也很方便修改,我们这里说一下第一种方法


把docker内部的文件拷贝到宿主机:
语法:docker cp [容器id]:docker容器中配置文件路径  主机路径
实例:docker cp [容器id]:/opt/mssql/bin/sqlservr  "/home/sqlservr"    这样就可以把docker内部的sqlservr文件拷贝出来到home文件夹下了



然后修改从docker内部复制出来的文件
先使用mv命令改一下文件名,后面修改后原始文件就还在相当于备份一下文件:mv sqlservr sqlservr.old

使用python修改内存限制代码(注意这里貌似只能使用python2,使用python3好像有点问题,centos7.6自带python2.7)

  1. oldfile = open("sqlservr.old""rb").read()
  2. newfile = oldfile.replace("\x00\x94\x35\x77""\x00\x80\x84\x1e")
  3. open("sqlservr""wb").write(newfile)
  4. exit()


改完后就变成两个文件了一个新的一个旧的,一个修改后的一个修改前的


复制到docker之前修改一下文件权限
命令:chmod 777 sqlservr
不然直接复制进去在启动容器可能会报权限相关的错


把修改后的文件复制到docker内部
语法:docker cp 主机文件路径 容器id:docker容器中配置文件路径
实例:docker cp /home/sqlservr 容器id:/opt/mssql/bin/sqlservr     这样就可以把刚刚修改内存限制的文件重新拷贝进去了


都搞定后然后重新启动容器即可
sqlserver就被成功运行起来了,当然想要外部连接可能你还向外开启一个对应的端口



四.使用bak还原数据


还原数据库需要把bak放到宿主机上,这里我们是使用docker装的sqlserver,所以需要把bak拷贝到对应的docker容器。

第一步:把bak拷贝到装docker服务器
我这里是使用的linux服务器,这步就不说了,随便使用filezilla这类的工具很方便的实现

第二步:把linux服务器的bak文件拷贝到docker内部

然后使用正常的方式还原即可,上面还能看到docker装的sqlserver默认找的路径就是docker内部的/var/opt/mssql/data,我们前面我们就是拷贝到的找个路径









欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

饰心

2021/11/18 11:37:54

666

尘叶心繁

2021/11/22 17:28:32

这种骚操作我觉得还是少用为妙

剑轩:@尘叶心繁嘿嘿嘿,搞一个sqlserver出来要用一下,就是配置吃不住了

2021/11/23 20:37:53 回复

window7 docker启动失败 error: Failed to create the VirtualBox object。VirtualBox com对象失败

docker启动失败 报错 error: Failed to create the VirtualBox object这个错是因为:virtuelbox 无法启动,所以启动之后会...

docker启动报错 No default Boot2docker ISO found locally downloading the latest

这是因为,启动时如果检测到没有 Boot2Docker,就会去下载,这个下载过程出现网络连接上的错误了,导致启动失败。可以去下...

docker常用命令删除镜像命令进入容器、docker重启命令等

1. docker version查看 Docker 版本信息2. docker info显示 Docker 系统信息,包括镜像,容器数等3. 运行容器第一次使用:d...

docker 二次启动失败(本人这里使用的是hyper-v)

fatal: failed to start daemon: Error initializing network controller: Error creating default network: hnsCall faile...

docker中Sware集群与service

swarm 总结:1,docker中使用swarm集群可以达到多任务分配到不同的节点进行处理,如果有空闲的docker机子将会把请求的处理...

.netCore 使用分布式缓存(docker+redis)

1. 通过docker创建 Redis执行命令:dockerrun--nameasp-redis-p6379:6379-dredis查看redis状态:dockerps可以发现alreadywo...

.net Core3.0在Ubuntu 16.04上面的部署(Supervisor+nginx)(扩展docker)

前 言Linux 随着Linux越来越流行,本人一个.net程序员也多次研究linux与.net的相关产品,以及中间件的使用方式。So今天给...

docker 下载 mcr.microsoft.com/dotnet/core/sdk:3.1 老不行

请将其修改为:mcr.azk8s.cn/dotnet/core/sdk:3.1

docker常用命令

Docker简单命令整理清单[TOC] Login 获取账户信息获取账户信息 docker info | sed &#39;/Username:/!d;s/.* //&#39; ...

windows安装docker

win7、win8 等需要利用 docker toolbox 来安装,国内可以使用阿里云的镜像来下载,下载地址:http://mirrors.aliyun.com/do...

Linux 安装Web版Vscode(docker+Local)

Linux 安装Web版Vscode(Docker+Local)[TOC] code-server 介绍 在任何地方的任何机器上运行VS代码,并在浏览器中访问它...

docker运行 Elasticsearch Kibana和Cerebro

Docker运行 Elasticsearch Kibana和Cerebro[TOC] Demo 运行 Docker-compose,本地构建更高效的开发环境,更直观地了解 El...

docker部署简单的mysql

Docker部署简单的mysql[TOC] 首先这玩意我是真不想写,网上写的太多了,但是又没有找到快速的创建方式。so…有疑问都可...

Unable to get the local Boot2docker ISO version: Did not find prefix "-v" in version string

我已经从 github 上下载 v19.03.12 的镜像到 vps 然后拖回本地放在 C:\Users\Administrator.docker\machine\cache 下了。依...

docker容器和镜像的区别

下面这两个比喻说得比较好 镜像就类似操作系统光盘介质,容器相当于通过光盘安装后的系统。通过光盘(镜像),我们能在不同...