検索

ホームページ  >  に質問  >  本文

docker - 如何限制容器内存大小?

我分别用两种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命令】,发现并未限制。

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

怪我咯怪我咯2763日前845

全員に返信(4)返信します

  • 怪我咯

    怪我咯2017-04-21 10:58:38

    コンテナ内の free コマンドは、Host 上のメモリを調べます。 free命令,看的是Host上的内存。

    要查看container的内存限制用这个:

    cat /cgroup/memory/lxc/{full_container_id}/memory.limit_in_bytes
    
    

    /cgroup/

    container のメモリ制限を確認するには、これを使用します: 🎜 リーリー 🎜/cgroup/ で他のリソースの制限を確認することもできます: 🎜 リーリー

    返事
    0
  • PHP中文网

    PHP中文网2017-04-21 10:58:38

    オーナー、私も ubuntu 仮想マシンで実験をしていたときにこの問題に遭遇しました。解決するにはここを参照してください
    http://docs.docker.com/articles/runmetrics/
    以下は重要な抜粋です

    メモリとスワップ アカウンティングを有効にしたい場合は、次のコマンドライン パラメータをカーネルに追加する必要があります:

    リーリー

    GRUB (Ubuntu のデフォルト) を使用するシステムでは、/etc/default/grub を編集し、GRUB_CMDLINE_LINUX を拡張することで、これらのパラメータを追加できます。 :/etc/default/grub and extending GRUB_CMDLINE_LINUX. Look for the following line:

    $ cgroup_enable=memory swapaccount=1
    

    And replace it by the following one:

    $ GRUB_CMDLINE_LINUX=""
    

    Then run sudo update-grub リーリー

    それを次のものに置き換えます:

    リーリー

    次に、sudo update-grub を実行し、再起動します。🎜 🎜これらのパラメータは、次の警告を取り除くのに役立ちます:🎜 リーリー

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-21 10:58:38

    Centos6 でこの問題を解決する方法を知っている人はいますか?
    私のDockerは1.6.2、Centosは6.6、カーネルバージョンは3.10.81です

    返事
    0
  • 黄舟

    黄舟2017-04-21 10:58:38

    @colin5063

    私はCentOS6.7ですが、ほぼ同じはずです

    /etc/grub.conf を変更し、現在使用しているカーネルのカーネル項目の末尾に cgroup_enable=memory swapaccount=1 を追加しました。/etc/grub.conf 在当前使用的内核的kernel项的最后加上cgroup_enable=memory swapaccount=1

    reboot

    然后 cat /proc/cmdline

    再起動🎜 🎜その後、cat /proc/cmdline は設定が有効になったことを確認します🎜

    返事
    0
  • キャンセル返事