前言

由于docker安装sqlserver需要至少2G的内存,而docker容器默认内存不到2G,所以启动会遇到内存不足的错误。

因为 windows docker 是在Hyper-V隔离沙箱中运行,并且win10场景中无法访问流模型,在该隔离模型中,docker容器实在轻量级Vm中运行,具有默认限制内存大小,为1G,因此如果要满足内存需求,(windows下)必须在创建容器的时候就指定内存大小

报错信息:sqlservr: This program requires a machine with at least 2000 megabytes of memory.

在这里插入图片描述

解决方法:
(1)打开cmd,删除容器(至于为什么删除,因为windows docker 不支持docker update -m)
docker rm cbb014020d7d

语法说明

docker rm [容器名称/id]

在这里插入图片描述

(2)重新创建容器,使用-m [bytes]指定容器内存大小
  • -m [bytes] :内存限制,格式是数字加单位,单位可以为 b,k,m,g。最小为 4M
docker run  -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=temp@pass" -p 1433:1433 -m 2000M --memory 2000M --name sqlserver -d mcr.microsoft.com/mssql/server:2017-latest

在这里插入图片描述
问题解决,成功启动容器

参考文档

(1)微软官方文档:Quickstart: Run SQL Server container images with Docker
(2)Docker(二十)-Docker容器CPU、memory资源限制

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐