默認情況下,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命令獲得的數據可能準確,