1. 程式人生 > >docker 筆記 (7) 限制容器

docker 筆記 (7) 限制容器

相對 code 默認 device 帶寬 swa dev style div

  • 內存
    • -m--memory:設置內存的使用限額,例如 100M, 2G。--memory-swap:設置 內存+swap 的使用限額。--vm 1:啟動 1 個內存工作線程。--vm-bytes 280M:每個線程分配 280M 內存
    • docker run -m 200M --memory-swap=300M ubuntu  

  • CPU
    • docker run --name "container_A" -c 1024 ubuntu

      docker run --name "container_B" -c 512 ubuntu


      container_A 的 cpu share 1024,是 container_B 的兩倍。當兩個容器都需要 CPU 資源時,container_A 可以得到的 CPU 是 container_B 的兩倍。

      需要特別註意的是,這種按權重分配 CPU 只會發生在 CPU 資源緊張的情況下。如果 container_A 處於空閑狀態,這時,為了充分利用 CPU 資源,container_B 也可以分配到全部可用的 CPU。

  • I/O
    • block IO 權重

      默認情況下,所有容器能平等地讀寫磁盤,可以通過設置 --blkio-weight 參數來改變容器 block IO 的優先級。

      --blkio-weight--cpu-shares 類似,設置的是相對權重值,默認為 500。在下面的例子中,container_A 讀寫磁盤的帶寬是 container_B 的兩倍。

      docker run -it --name container_A --blkio-weight 600 ubuntu

      docker run -it --name container_B --blkio-weight 300 ubuntu

      限制 bps 和 iops

      bps 是 byte per second,每秒讀寫的數據量。
      iops 是 io per second,每秒 IO 的次數。

      可通過以下參數控制容器的 bps 和 iops:
      --device-read-bps,限制讀某個設備的 bps。
      --device-write-bps,限制寫某個設備的 bps。
      --device-read-iops,限制讀某個設備的 iops。
      --device-write-iops,限制寫某個設備的 iops。

      下面這個例子限制容器寫 /dev/sda 的速率為 30 MB/s

      docker run -it --device-write-bps /dev/sda:30MB ubuntu

docker 筆記 (7) 限制容器