调整SQL Server的Docker容器大小

问题描述 投票:3回答:1

我想减轻我对容器化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。当我收到这些错误时,我的笔记本电脑中只有8台可用的16 GB内存正在使用中。所以这不是真实物理内存的问题。

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

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 docker-for-windows
1个回答
0
投票

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文件都在我的dockerfile旁边的data文件夹中。

© www.soinside.com 2019 - 2024. All rights reserved.