Docker 安装 MSSQLServer

镜像地址:Docker Hub

常用标签

  • 2022-latest
    docker pull mcr.microsoft.com/mssql/server:2022-latest
  • 2019-latest
    docker pull mcr.microsoft.com/mssql/server:2019-latest
  • 2017-latest
    docker pull mcr.microsoft.com/mssql/server:2017-latest
  • 2017-CU31-ubuntu-18.04
    docker pull mcr.microsoft.com/mssql/server:2017-CU31-ubuntu-18.04
  • 2019-CU18-ubuntu-20.04
    docker pull mcr.microsoft.com/mssql/server:2019-CU18-ubuntu-20.04

拉取镜像

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

创建映射文件夹,并给全部权限

mkdir /opt/mssql & chmod 777 /opt/mssql

创建并启动容器

docker run --name=mssqlserver2019 --restart=always -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=Pw_010203" -e "TZ=Asia/Shanghai"  -v /opt/mssql:/var/opt/mssql  -p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-latest

如果需要直接开启MSSQL代理 可以添加参数 -e "MSSQL_AGENT_ENABLED=true"

完整的环境变量可以参考微软的官方文档:在 Linux 上使用环境变量配置 SQL Server 设置

开启SQLSERVER 代理

以root执行命令

docker exec -u root  mssqlserver2019  /opt/mssql/bin/mssql-conf set sqlagent.enabled true

重启容器

docker  restart mssqlserver2019

设置定时备份/压缩/清理

新建.sh文件

#!/bin/bash
#
# 备份数据库
# 功能:数据库备份、压缩、定时清理
# 需要借助 crontab 定时任务实现
# 必须需要设置参数:saveday/dbname/folder/user/password/contrainerId
#

#设置备份保留天数
saveday=2

#数据库名称
dbname='dbname'

#设置mssql备份目录(容器映射目录)
folder='/mnt/mssql/data/bak/'

#用户名
user=sa

#密码
password='pwd'

#容器名称
containerId='mssqlserver2017'

#数据库服务器,一般为localhost
host=localhost

#当前日期(年月日时)
day=(date +%Y%m%d%H)

#根据保留天数获取需要清理的文件时间
removedate=(date -d "saveday days ago" +"%Y%m%d%H")

#备份的文件名
bakfilename=dbname'_'day

#备份操作
echo "数据库dbname 开始备份"
docker exec containerId /opt/mssql-tools/bin/sqlcmd \
    -Shost -U user -Ppassword \
    -Q "BACKUP DATABASE [dbname] TO DISK = N'/var/opt/mssql/data/bak/dbname/bakfilename.bak' WITH NOFORMAT, NOINIT, NAME = N'dbname Backup day', SKIP, NOREWIND, NOUNLOAD, STATS = 10"

#进入保存目录
cdfolderdbname

#将备份压缩成zip文件
echo '将备份压缩成zip文件'
zipbakfilename.zip bakfilename.bak

#删除打包前的文件
echo '删除压缩前的备份文件'
rm -fbakfilename.bak

#删除保存的zip文件
if [ -e "dbname"_"removedate.zip" ]; then
    echo 删除备份 dbname'_'removedate.zip
    rm -f dbname'_'removedate.zip
else
    echo 文件 dbname'_'removedate.zip 不存在,跳过删除
fi

cd ~

修改 crontab 配置文件

crontab -e

设置

0 1,12 * * * /bin/bash /home/db_bak_shell/xxx.sh

以上的命令为每天的1点和12点执行 /home/db_bak_shell_xxx.sh 文件.详细的使用方法查看下一节。

crontab(来源:ChatGPT)

crontab 是一个在 Unix 和类 Unix 系统上用于管理定时任务的命令。它允许你在指定的时间间隔内运行命令、脚本或程序。

要使用 crontab 命令,可以按照以下步骤进行操作:

  1. 编辑 crontab 文件: 执行以下命令来编辑当前用户的 crontab 文件:

    crontab -e

    如果是以 root 用户身份编辑系统级的 crontab 文件,可以执行以下命令:

    sudo crontab -e
  2. 添加定时任务: 在编辑模式下,你可以添加定时任务。每一行代表一个定时任务,每个字段用空格或制表符分隔。 典型的 crontab 行的格式如下:

    * * * * * command

    其中,* 表示通配符,表示匹配所有可能的值。 这五个星号分别表示分钟、小时、日期、月份和星期。 command 是你要定期执行的命令或脚本。 例如,要每天下午 3 点执行一个脚本,可以添加以下行:

    0 15 * * * /bin/bash /path/to/script.sh

    表达式测试地址:https://tool.lu/crontab/

  3. 保存并退出: 在编辑模式下,保存并退出编辑器。对于大多数编辑器,你可以按下 Ctrl + X,然后输入 Y 来保存修改。

  4. 查看现有的 crontab 任务: 如果你想查看当前用户的 crontab 任务列表,可以执行以下命令:

    crontab -l

    如果要查看系统级的 crontab 任务列表,可以执行以下命令:

    sudo crontab -l
  5. 删除 crontab 任务: 如果你想删除当前用户的 crontab 任务,可以执行以下命令:

    crontab -r

    如果要删除系统级的 crontab 任务,可以执行以下命令:

    sudo crontab -r

常见问题

SQL Server 2019 will run as non-root by default.
This container is running as user mssql.
To learn more visit https://go.microsoft.com/fwlink/?linkid=2099216.
/opt/mssql/bin/sqlservr: Error: The system directory [/.system] could not be created. File: LinuxDirectory.cpp:420 [Status: 0xC0000022 Access Denied errno = 0xD(13) Permission denied]

文件访问权限问题:

chmod 777 映射文件夹

参考文档:
使用 mssql-conf 工具配置 Linux 上的 SQL Server

在 Linux 上使用环境变量配置 SQL Server 设置

转载请标明出处:Docker 安装 MSSQLServer

作者:Niko

欢迎访问我的主页:vlins.cn

暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇