默认情况下,Docker容器可以使用主机的所有内存。
启动Docker容器时,若没有设置memory和memory-swap选项,则该容器可以使用主机的所有内存,没有限制。
当前要做的是把一个运行着gitlab 的容器内存限制在2048M以内,尝试用:
docker update -m 2048m gitlab
报错:
-
Memory limit should be smaller than already set memoryswap limit, update the memoryswap at the same time
发现问题,docker 默认没有启用memory-swap交换内存,直接设置了内存会出问题,也就是说宿主 swap 支持使用多少则容器即可使用多少,如果 --memory-swap 设置小于 --memory则设置不生效。
将memory-swap 设置值为 -1,表示容器程序使用内存受限,而 swap 空间使用不受限制。
docker update --memory 2048m --memory-swap -1 gitlab
使用docker stats命令可以查看容器的内存,但是有时候docker stats命令获得的数据可能准确,