docker - 如何限制容器内存大小?
怪我咯
怪我咯 2017-04-21 10:56:38
0
4
864

我分别用两种linux系统部署Docker0.8,都没法限制容器的内存大小。具体情况如下:

  1. 用CentOS6.5【内核为3.10.5-3.el6.x86_64】做主机,新建容器,得到结果如下:
# docker run -i -t -d -m 512m centos /bin/bash   
WARNING: WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.
9229fe1bac59992337e909cbc5a11f3e0fa81553ad7b136bec95a62181a251fd

该容器新建成功,但不能限制内存大小。

  1. Ubuntu 12.04【内核为3.8.0-38-generic】做主机,并且修正/etc/default/grub,更改$ GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"之后,新建容器,得到结果如下:
# sudo docker run -i -t -m 512m -d ubuntu /bin/bash
89d629ed37d63b67b49ed8c4c11cab653d61d5b85227bdd10c8a9a0a718c686e

看似未报错,登陆该新建的容器里面查看内存【free命令】,发现并未限制。

大家手头的主机都是什么系统,有没有这种情况?如何解决?盼回复,谢谢!

怪我咯
怪我咯

走同样的路,发现不同的人生

모든 응답(4)
刘奇

컨테이너의 free 명령은 Host의 메모리를 살펴봅니다.

container의 메모리 제한을 보려면 다음을 사용하세요.

으아악

/cgroup/에서 다른 리소스의 제한 사항을 확인할 수도 있습니다.

으아악
洪涛

소유자님, 저도 우분투 가상머신으로 실험을 하다가 이런 문제가 발생했습니다. 여기를 참고해서 해결해주세요
http://docs.docker.com/articles/runmetrics/
다음은 주요 발췌 내용입니다

메모리 및 스왑 계정을 활성화하려면 커널에 다음 명령줄 매개변수를 추가해야 합니다.

으아아아

GRUB(Ubuntu의 기본값)를 사용하는 시스템에서는 /etc/default/grub을 편집하고 GRUB_CMDLINE_LINUX을 확장하여 해당 매개변수를 추가할 수 있습니다.

으아아아

다음 항목으로 교체하세요.

으아아아

그런 다음 sudo update-grub을 실행하고 재부팅하세요.

이 매개변수는 다음 경고를 제거하는 데 도움이 됩니다.

으아아아
大家讲道理

Centos6에서 이 문제를 해결하는 방법을 아는 사람이 있나요?
내 도커는 1.6.2, Centos는 6.6, 커널 버전은 3.10.81

黄舟

@colin5063

저는 CentOS6.7입니다. 거의 동일할 것입니다

현재 사용하고 있는 커널의 커널 항목 끝에

/etc/grub.conf을 추가하여 cgroup_enable=memory swapaccount=1수정했습니다

.

재부팅

그러면 cat /proc/cmdline 구성이 적용된 것을 확인할 수 있습니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿