gpt4 book ai didi

sql-server - 调整 SQL Server 的 Docker 容器大小

转载 作者:行者123 更新时间:2023-12-04 00:54:06 25 4
gpt4 key购买 nike

我想缓解我的容器化 SQL Server 遇到的内存问题。我在 Windows 10 v 1709 上运行它。

为了进行测试,我使用以下命令创建了一个 SQL Server 容器:

docker run -d -p 1433:1433 --name sql1 -e SA_PASSWORD=1Secure*Password1 
-e ACCEPT_EULA=Y microsoft/mssql-server-windows-developer:2017-latest

在这个容器化的 SQL 实例中,我创建了一个数据库,直到它变得太大为止。我现在遇到内存不足错误。例如,当我在 SSMS 中运行查询时,我收到“资源池‘默认’中的系统内存不足,无法运行此查询。”同样,当我检查 SQL Server 环形缓冲区时,我看到 RESOURCE_MEMPHYSICAL_LOW .当我收到这些错误时,我的笔记本电脑可用的 16 gig 内存中只有 8 gig 正在使用中。所以这不是真实物理内存的问题。

Docker for Windows 在 Windows 10 上运行时,在默认为 1GIG RAM 的 Hyper-V VM 中运行容器。我可以通过启动我的容器,然后使用它进入交互模式来确认这一点:
PS C:\repos\somefolder> docker exec -it sql1 powershell

在交互模式下,关注 this other SO example ,我看到这些结果:
PS C:\> systeminfo | findstr "Memory"
Total Physical Memory: 1,023 MB
Available Physical Memory: 221 MB
Virtual Memory: Max Size: 1,023 MB
Virtual Memory: Available: 82 MB
Virtual Memory: In Use: 941 MB

另外,当我运行 docker stats 时我可以看到我的 sql1容器正在使用 750MiB 到 970MiB 范围内的 PRIV WORKING SET。

好的,所以我已经明确确认我有一个需要提高的 Hyper-V VM 1GB 限制。

如何在不丢失此容器内的数据库的情况下执行此操作?我看到一个回答说 "use -m" option ,但我认为这仅在首次创建容器时有效。

Docker 版本
$ docker version
Client:
Version: 18.03.1-ce
API version: 1.37
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:12:48 2018
OS/Arch: windows/amd64
Experimental: false
Orchestrator: swarm

Server:
Engine:
Version: 18.03.1-ce
API version: 1.37 (minimum version 1.24)
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:21:42 2018
OS/Arch: windows/amd64
Experimental: false

最佳答案

SQL Server 镜像允许您以 JSON 集附加数据库,如 attach_dbs环境变量。

我所做的是这样的:

# escape=` 

FROM microsoft/mssql-server-windows-express:2017-GA

LABEL MAINTAINER="Seba Gómez @sebagomez"

# SQL Databases
COPY data\ c:/data
ENV attach_dbs="[{'dbName':'MyDB','dbFiles':['C:\\data\\MyDB.mdf','C:\\data\\MyDB_log.ldf']}, {'dbName':'MyOtherDB','dbFiles':['C:\\data\\MyOtherDB.mdf','C:\\data\\MyOtherDB_log.ldf']}]" `
ACCEPT_EULA=Y `
sa_password="dbPassword!"

所有 mdf 和 ldf 文件都在 data 中文件夹就在我的 dockerfile 旁边。

关于sql-server - 调整 SQL Server 的 Docker 容器大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51489728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com