Docker 安装SqlServer
大约 2 分钟约 699 字
Docker 安装SqlServer
拉取
# SqlServer2019
sudo docker pull mcr.microsoft.com/mssql/server:2019-latest
# SqlServer2022
sudo docker pull mcr.microsoft.com/mssql/server:2022-latest
创建主机映射目录
mkdir -p /usr/local/docker/sqlserver
修改主机映射目录权限
chown -R 10001:0 /usr/local/docker/sqlserver
运行
提示
SA_PASSWORD 环境变量已弃用。 请改用 MSSQL_SA_PASSWORD。
# SqlServer2019
# Enterprise:HMWJ3-KY3J2-NMVD7-KG4JR-X2G8G
# Enterprise Core:2C9JR-K3RNG-QD4M4-JQ2HR-8468J
# Strandard:PMBDC-FXVM3-T777P-N4FY8-PKFF4
# Web:33QQK-WWQNB-G6T46-C86YB-TX2PH
docker run -p 1433:1433 --name sqlserver \
-e "ACCEPT_EULA=Y" \
-e "MSSQL_SA_PASSWORD=111111111" \
-e "MSSQL_PID=HMWJ3-KY3J2-NMVD7-KG4JR-X2G8G" \
-e "MSSQL_COLLATION=Chinese_PRC_CI_AS" \
--restart=always \
-v /usr/local/docker/sqlserver:/var/opt/mssql \
-d \
mcr.microsoft.com/mssql/server:2019-latest
docker run -p 1433:1433 --name sqlserver \
-e "ACCEPT_EULA=Y" \
-e "MSSQL_SA_PASSWORD=111111111" \
-e "MSSQL_COLLATION=Chinese_PRC_CI_AS" \
--restart=always \
-v /usr/local/docker/sqlserver:/var/opt/mssql \
-d \
mcr.microsoft.com/mssql/server:2022-latest
#windows docker desktop 下 挂载目录示例
-v D:/docker/sqlserver/data:/var/opt/mssql/data
#或者主动创建data目录,未测试
参数说明:
参数 | 说明 |
---|---|
-e "ACCEPT_EULA=Y" | 将 ACCEPT_EULA 变量设置为任意值,以确认接受最终用户许可协议。 SQL Server 映像的必需设置。 |
-e "MSSQL_SA_PASSWORD=YourStrong@Passw0rd" | 指定至少包含 8 个字符且符合 SQL Server 密码要求的强密码。 SQL Server 映像的必需设置。 |
-e "MSSQL_PID=HMWJ3-KY3J2-NMVD7-KG4JR-X2G8G" | 序列号 |
-e "MSSQL_COLLATION=<SQL_Server_collation>" | 指定自定义 SQL Server 排序规则,而不使用默认值 SQL_Latin1_General_CP1_CI_AS。 |
-p 1433:1433 | 将主机环境中的 TCP 端口(第一个值)映射到容器中的 TCP 端口(第二个值)。 在此示例中,SQL Server 侦听容器中的 TCP 1433,此容器端口随后会对主机上的 TCP端口 1433 公开。 |
--name sqlserver | 为容器指定一个自定义名称,而不是使用随机生成的名称。 如果运行多个容器,则无法重复使用相同的名称。 |
--hostname sqlserver | 用于显式设置容器主机名。 如果未指定主机名,则主机名默认为容器 ID,这是随机生成的系统 GUID。 |
-d | 在后台运行容器(守护程序)。 |
mcr.microsoft.com/mssql/server:2019-latest | SQL Server Linux 容器映像。 |
查看运行状态
sudo docker ps -a
查看错误日志
docker logs --tail 50 --follow --timestamps sqlserver
docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection
## 如果存在权限文件夹错误
# 执行chown -R 10001:0 /usr/local/docker/sqlserver
更改系统管理员密码
sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \
-S localhost -U SA \
-P "$(read -sp "Enter current SA password: "; echo "${REPLY}")" \
-Q "ALTER LOGIN SA WITH PASSWORD=\"$(read -sp "Enter new SA password: "; echo "${REPLY}")\""
连接到 SQL Server
sudo docker exec -it sqlserver "bash"
删除容器
sudo docker stop sqlserver
sudo docker rm sqlserver
防火墙放行端口1433
#查看防火墙目前的放行端口列表
firewall-cmd --list-ports
#添加防火墙放行端口(permanent代表永久生效)
firewall-cmd --add-port=1433/tcp --permanent
#重新加载防火墙(添加完放行端口一定要重新加载防火墙)
firewall-cmd --reload