docker-compose支持mem_limit?我该怎么测试呢?
我有一个以下docker-compose.yml
repository:
image: myregistry/my_nginx_image
mem_limit: 60m
volumes:
- /etc/localtime:/etc/localtime
ports:
- "80:80"
Run Code Online (Sandbox Code Playgroud)
如何证明容器实际上不超过60 mb的RAM?
我在用:
我想缓解我的容器化 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
Run Code Online (Sandbox Code Playgroud)
在这个容器化的 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
Run Code Online (Sandbox Code Playgroud)
在交互模式下,按照这个其他 SO 示例,我看到以下结果:
PS C:\> systeminfo | findstr "Memory"
Total Physical Memory: 1,023 MB
Available …Run Code Online (Sandbox Code Playgroud) 我正在运行 Windows 11,并根据文档通过 Scoop 安装了 supabase cli。我将其添加到现有存储库中,因此我已经毫无问题地运行了以下命令:
supabase login
supabase init
Run Code Online (Sandbox Code Playgroud)
当我去运行它时,supabase start它第一次完全安装了 docker 映像和所有内容,但它总是以以下错误消息结束:
> supabase start
Database is not healthy.
Error: failed to connect to `host=localhost user=postgres database=postgres`: failed to receive message (unexpected EOF)
Try rerunning the command with --debug to troubleshoot the error.
Run Code Online (Sandbox Code Playgroud)
我尝试--debug按照指示使用该标志运行,但我似乎无法从中看出任何信息,并且由于不同的问题而失败:
... 2023/03/11 22:46:09 Send Done
2023/03/11 22:46:09 Recv First Byte
2023/03/11 22:46:10 Sent Header: Host [docker]
2023/03/11 22:46:10 Sent Header: User-Agent [Go-http-client/1.1]
2023/03/11 22:46:10 Send Done
2023/03/11 22:46:10 Recv …Run Code Online (Sandbox Code Playgroud) 当尝试通过Docker的任务栏项目“切换到Linux容器”时,该过程在几秒钟后失败,并显示有关“没有足够的内存来启动Docker”的错误。
由于主机系统没有那么多的内存,我想减少全局Docker机器允许使用的最大内存量(我认为这里默认为2 GB)。因此,我想将其减少到仅1 GB。
当Docker在Windows容器模式下运行时,Docker的设置中没有“高级”部分,可以轻松减少内存分配。
我可以使用Windows的Hyper-V管理器找到“ MobyLinuxVM”。但是,在此处调整内存设置时,每次我启动Docker并再次尝试切换到Linux容器模式时,它都会被覆盖。
是否有一种不使用用户界面为Docker定义最大内存量的方法(在这种情况下,由于Windows容器模式中缺少“高级”部分,因此无法使用-在能够切换到Linux容器之前) ?