centos7:docker限制内存安装sqlserver

docker安装sqlserver-自定义内存

  • 1.原因
  • 2.背景
    • 2.1内存限制
  • 3.解决方式
    • 3.1简单点
    • 3.2修改内存限制
  • 4.安装步骤
    • 4.1 在没有内存限制的虚拟机上安装sqlserver
      • 4.1.1寻找镜像:
      • 4.1.2 下载镜像
      • 4.1.3 创建并且运行容器
    • 4.2 将我们需要的文件拷贝到宿主机
    • 4.3 修改拿到的文件的内存限制,修改为512m
    • 4.4 在内存有限的服务器
    • 4.5 下载镜像运行容器
  • 5. 客户端连接
  • 6. 其他
    • 1.如果容器里面的时间和服务器时间不一样

1.原因

  1. 直接安装sqlserver如果内存不足也会报错.
  2. 用docker直接安装sqlserver的时候如果服务器可用内存低于2G会抱错

2.背景

2.1内存限制

安装sqlserver有内存限制
用docker直接安装sqlserver的时候如果服务器可用内存低于2G会抱错
This program requires a machine with at least 2000 megabytes of memory错误

3.解决方式

3.1简单点

换一个大的内容服务器!
哈哈!
木得红票票 哭晕
只能用下面的方式搞一下,修改内存限制了

3.2修改内存限制

将内存调整为512m.
调整文件是/opt/mssql/bin/下的sqlservr

问题: 我们连容器都运行不起来,更别说修改了!!

解决方式:我现在虚拟机(内存够的)用docker安装了sqlserver然后把配置文件拷贝出来,修改完毕后,上传服务器.
然后做在内存不够的服务器上运行sqlserver的时候进行配置映射

4.安装步骤

4.1 在没有内存限制的虚拟机上安装sqlserver

4.1.1寻找镜像:

docker search mssql

镜像是微软官方的,但docker hub 奇怪的是并没有把其标示为OFFICIAL。

4.1.2 下载镜像

   docker pull microsoft/mssql-server-linux

4.1.3 创建并且运行容器

docker run --name sqlserver -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=yourStrong(!)Password' -p 1433:1433 -d microsoft/mssql-server-linux

这个密码需要复杂密码,要有大小写和特殊符号,替换yourStrong(!)Password成你自己的密码就行。

4.2 将我们需要的文件拷贝到宿主机

文件在容器的/opt/mssql/bin下(只拷贝bin文件就行)

# 拷贝bin下的文件到宿主机的/tmp下
docker cp sqlserver:/opt/mssql/bin /tmp

到这里我们就拿到了我们需要的文件,不想弄得可以留言找我要.

参考: https://www.cnblogs.com/areyouready/p/8973495.html

4.3 修改拿到的文件的内存限制,修改为512m

# 进入刚才文件的保存目录
cd /tmp/bin
mv sqlservr sqlservr.old # 保存备份文件
python # 使用python修改内存限制代码
>>>oldfile = open("sqlservr.old", "rb").read()
>>>newfile = oldfile.replace("\x00\x94\x35\x77", "\x00\x80\x84\x1e")
>>>open("sqlservr", "wb").write(newfile)
>>>exit()
# 修改权限
chmod 755 sqlservr

4.4 在内存有限的服务器

执行 /opt 目录下新建文件`mssql/bin’

mkdir -p /opt/mssql/bin

将改才改完后的bin下的所有文件上传到我们新建的bin目录下

4.5 下载镜像运行容器

创建data映射目录 mkdir -p /root/sqlserver
一定要映射配置文件

docker pull microsoft/mssql-server-linux

docker run --name sqlserver -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=cnTRE147+' -p 1433:1433 -v /root/sqlserver/:/var/opt/mssql/data/ -v /opt/mssql/bin:/opt/mssql/bin/  -d microsoft/mssql-server-linux

我这里除了映射配置文件还映射了data文件
配置的用户是SA 密码是:cnTRE147+
sqlserver默认用户是sa,安装的时候就需要给这个sa设置密码.至于想用其他用户,需要安装完成后再去创建其他角色.
(我刚开始想,安装的时候就创建指定的用户名millions,我改成了 millions_PASSWORD=cnTRE147+ 但是我发现用客户端连接的时候提示用户名不对,我直接把连接用户名改成sa居然可以,虽然我开始没有写'SA_PASSWORD=cnTRE147+,很奇怪,哈哈.)

5. 客户端连接

用客户端就可以连接了
查看版本 SELECT @@VERSION
用阿里云等服务器的要记得打开端口

参考:
https://www.cnblogs.com/linjiqin/p/11283184.html
https://segmentfault.com/a/1190000014232366

6. 其他

1.如果容器里面的时间和服务器时间不一样

就是再加一个映射
-v /etc/localtime:/etc/localtime
参考
文档:docker时间设置.md
链接:http://note.youdao.com/noteshare?id=33cb9ae2f396928c08779f6ba077bf67&sub=C854FAA358C047B1BB0273758116E142

你可能感兴趣的:(安装,linux,docker,centos,sqlserver)