稷然如此

  • 首页
  • 文章分类
    • AI
    • Android
    • Java
    • Shell
    • Vue
    • C#
    • Python
    • 数据库
    • 组件
    • 其他
    • Game
  • 常用命令
    • Docker
    • Git
    • Linux
  • 操作系统
    • CentOS
    • Ubuntu
    • Windows
    • Kylin
  • 工具
    • IntelliJ IDEA
    • Visual Studio Code
稷然如此
不积跬步,无以至千里
  1. 首页
  2. 操作系统
  3. CentOS
  4. 正文

Docker 安装 SqlServer

2024年8月13日 722点热度 0人点赞

1、拉取 SqlServer 镜像

docker pull mcr.microsoft.com/mssql/server

2、运行容器

sudo docker run -d \
--restart=always \
--name sqlserver \
--network host \
-e 'ACCEPT_EULA=Y' \
-e 'SA_PASSWORD=Admin@123' \
-e 'MSSQL_PID=Express' \
-e 'MSSQL_LCID=2052' \
-e TZ='Asia/Shanghai' \
-p 1433:1433 \
-t mcr.microsoft.com/mssql/server
参数解释:
-e "ACCEPT_EULA=Y":默认选择同意协议许可证
-e "SA_PASSWORD=123456":sa账户密码,设置SA用户的密码,要求密码长度必须至少为8个字符,并包含以下四组中的三组字符:大写字母、小写字母、以10为基数的数字和符号。注意密码强度不够,会出现容器启动就停止,密码需要大小写字母+数字+特殊符号。

3、进入容器

docker exec -it 容器id /bin/bash

4、进入数据库

/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "123456"

 

注意:
如果是虚拟机安装,而虚拟机分配的内存较小,会导致运行容器后容器一直在重启状态,通过 docker logs 容器id,可以看到日志显示:“This program requires a machine with at least 2000 megabytes of memory.”,这表示 sqlserver 限制了运行内存为2G,所以需要修改下配置。
1.停止正在运行的容器(可选):
docker stop 容器id
2.拷贝容器内的/opt/mssql/bin/sqlservr文件到本地目录:
docker cp 容器id:/opt/mssql/bin/sqlservr /home/sqlservr
这里只能用容器id,因为容器是停止运行状态的,非停止运行状态下可以是容器名。
3.改名备份
mv sqlservr sqlservr.old
4.通过python修改sqlservr文件
如果通过输入 python 命令提示:“ python: 未找到命令”,可通过命令:which python3 或 whereis python3 查看,如果都不存在,就需要安装,安装命令:
yum install python3 -y
python 安装成功后,需要导入到环境变量中:export PATH=$PATH:/path/to/python,此命令单次有效,需要设置进系统配置。
在修改之前,确认当前拉取的镜像版本的sqlservr文件是否存在“\x00\x94\x35\x77”,通过指令:oldfile.find(b"\x00\x94\x35\x77"),返回-1则不存在,正整数为存在。不存在情况下需要查下“\xff\x93\x35\77”,并将下面修改指令:newfile = oldfile.replace(b"\x00\x94\x35\x77", b"\x00\x80\x84\x1e")变更为newfile = oldfile.replace(b"\xff\x93\x35\77", b"\x00\x80\x84\x1e")。
修改文件:
python3
进入 python 指令行后逐行输入以下内容:
oldfile = open("sqlservr.old", "rb").read()
newfile = oldfile.replace(b"\x00\x94\x35\x77", b"\x00\x80\x84\x1e")
open("sqlservr", "wb").write(newfile)
exit()
5.给新生成的 sqlservr 文件授权(重要,否则报错:/opt/mssql/bin/sqlservr: Permission denied,sqlservr 文件无权限操作):
chomod 777 sqlservr
6.将修改后的 sqlservr 发送到容器
docker cp /home/sqlservr 容器id:/opt/mssql/bin/sqlservr
7.运行/重启容器
docker start/restart 容器id
标签: Docker docker sqlserver sqlserver
最后更新:2024年8月13日

Akim

犇 骉 Java、C#、Python、Go、Android、MiniProgram、Bootstrap、Vue2

点赞
< 上一篇
下一篇 >
文章目录
  • 1、拉取 SqlServer 镜像
  • 2、运行容器
  • 3、进入容器
  • 4、进入数据库

Copyright © 2025 aianran.com All Rights Reserved.

免责申明 | 隐私政策 | 服务条款 | 关于我们

黔ICP备2023008200号-1

贵公网安备 52010202003594号