centos7 Docker安装Sqlserver时报This program requires a machine with at least 2000 megabytes of memory

1 篇文章 0 订阅
1 篇文章 0 订阅

centos7 Docker安装Sqlserver时报This program requires a machine with at least 2000 megabytes of memory的解决办法

正常拉取镜像步骤
拉取镜像

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

运行镜像,生成容器

docker run  -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=SA@12345" -p 1433:1433  --memory 2000M --name sqlserver -d mcr.microsoft.com/mssql/server:2017-lates

这时候使用命令是看不到该容器运行的

docker ps -a

使用命令查看报错日志

docker logs sqlserver

#看到错误

his program requires a machine with at least 2000 megabytes of memory

在这里插入图片描述

解决方案

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

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

docker cp sqlserver:/opt/mssql/bin/sqlservr  "/home/sqlservr"

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

mv sqlservr sqlservr.old

使用python修改内存限制代码
centos7 默认自带py环境
在这里插入图片描述

在py控制台下分别输入

oldfile=open("sqlservr.old","rd").read()
newfile=oldfile.replace("\x00\x94\x35\x77", "\x00\x80\x84\x1e") 
open("sqlservr", "wb").write(newfile)
exit()

改完后生成新的sqlservr文件
在这里插入图片描述

复制到docker之前修改一下文件权限,否则在start容器时,会有权限的报错
命令:

chmod 777 sqlservr

把修改后的文件复制到docker内部
语法:docker cp 主机文件路径 容器id(或者容器name):docker容器中配置文件路径
实例:docker cp /home/sqlservr 容器id(或者容器name):/opt/mssql/bin/sqlservr

docker cp /home/sqlservr sqlserver:/opt/mssql/bin/sqlservr 

最后重启sqlserver容器

docker restart sqlserver

#查看容器状态

docker ps -a
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值