如何在命令行中限制可用于Docker Engine的资源?

时间:2019-06-25 16:41:20

标签: docker

也就是说,您可以在Docker的设置picture中进行更改(即使用GUI)。我可以使用命令行而不是OSX来限制内存吗?

问题在于,在将其内存限制设置为10GB之后,我无法再启动Docker,而只是挂起。

更新: 我确实读过this question,但我认为它不适用于我,因为我没有虚拟盒子。

1 个答案:

答案 0 :(得分:0)

适用于Mac的Docker使用hyperv就像Windows10上的/Users/<username>/Library/Group Containers/group.com.docker/settings.json 一样,设置可能位于下一个位置:

{
  "dockerAppLaunchPath" : "/Applications/Docker.app",
  "proxyHttpMode" : "system",
  "buildNumber" : "31259",
  "cpus" : 2,
  "diskSizeMiB" : 61035,
  "version" : "2.0.0.3",
  "settingsVersion" : 1,
  "channelID" : "stable",
  "memoryMiB" : 2048,
  "displayedWelcomeMessage" : true,
  "displayedWelcomeWhale" : true,
  "linuxDaemonConfigCreationDate" : "2019-06-26 02:32:30 +0000",
  "diskPath" : "Library/Containers/com.docker.docker/Data/vms/0/Docker.qcow2"
}

默认值为:

sed -i 's/"memoryMiB".*/"memoryMiB" : 3072,/g' /Users/`id -un`/Library/Group\ Containers/group.com.docker/settings.json

因此,您可以使用命令来修改要更改的值,接下来是将内存更改为3072M的示例,或者仅使用任何编辑器直接修改该值:

osascript -e 'quit app "Docker"' && open -a Docker

最后,在命令中,如下所示重新启动Docker:

getAddress(params) {
   let url = 'https://maps.googleapis.com/maps/api/geocode/json?key=' + this.google_api_key + '&latlng=' + params.lat + ',' + params.long;
   return this.GET(url);
}

GET(url) {
  return this.http.get(url).map(res => res.json());
}