拉取镜像
docker pull mcr.microsoft.com/mssql/server:2019-latest
准备持久化目录,准备挂在进目录卷的内容
mkdir -p mssql/sql1data
cd mssql
# docker create 容器,创建并不启动,用户拷贝出需要的文件
docker create -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=93i7f5^#Wpe98G6$" \
-p 1433:1433 --name sql1 -h sql1 \
mcr.microsoft.com/mssql/server:2019-latest
# 拷贝数据目录
docker cp sql1:/var/opt/mssql sql1data
# 修改访问权限,否则挂载到容器内部后会启动失败
chown -R 10001:0 sql1data
# 删除初始化容器
docker rm sql1
挂载目录并重新运行容器
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=93i7f5^#Wpe98G6$" \
--restart=always \
-p 1433:1433 --name sql1 -h sql1 \
-v sql1data:/var/opt/mssql \
-d mcr.microsoft.com/mssql/server:2019-latest
备注
密码应符合 SQL Server 默认密码策略,否则容器无法设置 SQL Server,将停止工作。 默认情况下,密码的长度必须至少为 8 个字符,并且必须包含以下四种字符中的三种:大写字母、小写字母、十进制数字和符号。 你可以通过执行 docker logs 命令检查错误日志。
默认情况下,这会创建一个使用 SQL Server 2019 开发人员版的容器。
查看容器运行状态
docker ps | grep sql1
进入容器
docker exec -it sql1 bash
测试连接
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "93i7f5^#Wpe98G6$"
创建 SQL Server 容器后,通过在容器中运行 echo $SA_PASSWORD
,可发现指定的 SA_PASSWORD
环境变量。 出于安全考虑,需要更改 SA 密码。进入容器运行 sqlcmd
,然后根据提示输入旧密码和新密码
docker exec -it sql1 bash
/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}")\""
X5oLUJQR5ApRN6KDWZX
X5oLUJQR5ApRN6KDWZX
测试新密码是否正确测
docker exec -it sql1 bash
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<YourNewStrong@Passw0rd>"
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "PytGcKOoXw54r0l812S6"
Sqlcmd
连接到数据库测试连接数据
sqlcmd -S <ip_address>,1433 -U SA -P "<YourNewStrong@Passw0rd>"
[1]. 使用 Docker 运行 SQL Server 容器映像
[2]. 在 Linux Docker 容器中还原 SQL Server 数据库