Docker совет №7: Измеряйте ресурсы, используемые контейнерами

Nov 16, 2017 10:37 · 595 words · 3 minute read docker

В docker’е существует встроенная команда, позволяющая увидеть сколько CPU, памяти, сетевых операций ввода-вывода (network I/O) и блочных операций ввода-вывода (block I/O) используют запущенные контейнеры. Давайте разберемся!

Знать, сколько ресурсов используется тем или иным docker-контейнером очень полезно. Вооружившись этими знаниями, можно планировать апгрейд существующих и разворачивать дополнительные docker-хосты, соответствующие используемым ресурсам. В перспективе это знание позволяет сэкономить серьезные деньги на инфраструктуре.

Все, что вам нужно сделать, — запустить команду docker stats на docker-хосте. Вывод команды будет примерно следующим:

CONTAINER           CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
1fbfd146c892        0.00%               7.562MiB / 15.57GiB   0.05%               58MB / 84.4MB       831kB / 0B          4
3e18760df407        0.03%               21.7MiB / 15.57GiB    0.14%               43.4MB / 56MB       17.5MB / 29.4MB     21
059c84d3606b        0.00%               7.52MiB / 15.57GiB    0.05%               87.7MB / 145MB      9.38MB / 0B         22
c7cff2a01c4b        3.00%               12.3MiB / 15.57GiB    0.08%               10GB / 4.71GB       340kB / 0B          20
d696ab70fe4b        0.00%               12.09MiB / 15.57GiB   0.08%               9.48GB / 4.41GB     532kB / 0B          20
54f2f9e5fb82        0.00%               17.88MiB / 15.57GiB   0.11%               96.8MB / 2.02GB     2.4MB / 0B          18
6f1b0479d00b        0.00%               13.32MiB / 15.57GiB   0.08%               38.6MB / 83.9MB     856kB / 0B          12
7e4e93b694fb        0.00%               8.777MiB / 15.57GiB   0.06%               162MB / 168MB       434kB / 0B          19
9b1d756a0b1e        0.00%               15.45MiB / 15.57GiB   0.10%               37.7MB / 83.4MB     1.78MB / 98.3kB     12
29d0cac48303        0.00%               15.27MiB / 15.57GiB   0.10%               39.2MB / 83.8MB     410kB / 3.07MB      12
124fae38e06c        0.00%               5.617MiB / 15.57GiB   0.04%               68.7MB / 99.9MB     1.07MB / 0B         4
809143ebbd38        0.00%               9.441MiB / 15.57GiB   0.06%               158MB / 165MB       651kB / 0B          19
2158ae2f51ab        2.25%               453.3MiB / 15.57GiB   2.84%               842MB / 64.5MB      1.3GB / 41.4GB      22
aaa9c93137b2        0.00%               10.22MiB / 15.57GiB   0.06%               343MB / 156MB       4.3MB / 0B          19
e917f287bb0c        0.00%               10.77MiB / 15.57GiB   0.07%               198MB / 91.7MB      7.13MB / 3.13MB     21
62f86fb57627        2.22%               54.01MiB / 15.57GiB   0.34%               55.8MB / 1.16GB     211MB / 1.43MB      24
a173fb7cacda        0.00%               15.04MiB / 15.57GiB   0.09%               49.5MB / 110MB      1.44MB / 0B         5
256c8d25e9f9        0.09%               1.598MiB / 15.57GiB   0.01%               12.8GB / 13.2GB     4.49MB / 0B         2
304cd30dbc10        15.82%              3.824GiB / 15.57GiB   24.56%              49.2GB / 14.4GB     12.6GB / 9.64GB     170
74a23eb1bdf0        1.18%               3.083GiB / 15.57GiB   19.80%              170GB / 56.4GB      111GB / 106GB       210
9a14993f1238        6.52%               1.123GiB / 15.57GiB   7.21%               66.9GB / 213GB      69.1GB / 679GB      127

При желании, вывод данной статистики можно сузить, добавив в него один или несколько ID контейнеров в качестве параметров для команды. Например, так docker stats 304cd30dbc10 74a23eb1bdf0:

CONTAINER           CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
304cd30dbc10        0.98%               3.824GiB / 15.57GiB   24.56%              49.2GB / 14.4GB     12.6GB / 9.64GB     163
74a23eb1bdf0        0.19%               3.083GiB / 15.57GiB   19.80%              170GB / 56.4GB      111GB / 106GB       210

Также можно использовать флаг --format, чтобы выводить только интересующие столбцы информации. Например, для вывода статистики использования CPU и памяти используйте:

docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"

CONTAINER           CPU %               MEM USAGE / LIMIT
1fbfd146c892        0.00%               7.562MiB / 15.57GiB
3e18760df407        0.04%               21.71MiB / 15.57GiB
059c84d3606b        0.00%               7.535MiB / 15.57GiB
c7cff2a01c4b        0.00%               12.79MiB / 15.57GiB
d696ab70fe4b        0.00%               11.76MiB / 15.57GiB
54f2f9e5fb82        0.00%               17.88MiB / 15.57GiB
6f1b0479d00b        0.00%               13.29MiB / 15.57GiB
7e4e93b694fb        0.00%               9.535MiB / 15.57GiB
9b1d756a0b1e        0.00%               15.46MiB / 15.57GiB
29d0cac48303        0.06%               15.27MiB / 15.57GiB
124fae38e06c        0.00%               5.617MiB / 15.57GiB
809143ebbd38        0.00%               9.441MiB / 15.57GiB
2158ae2f51ab        3.55%               445.8MiB / 15.57GiB
aaa9c93137b2        0.00%               10.22MiB / 15.57GiB
e917f287bb0c        0.06%               10.73MiB / 15.57GiB
62f86fb57627        2.53%               54.98MiB / 15.57GiB
a173fb7cacda        0.00%               15.04MiB / 15.57GiB
256c8d25e9f9        0.00%               1.598MiB / 15.57GiB
304cd30dbc10        0.16%               3.836GiB / 15.57GiB
74a23eb1bdf0        0.24%               3.083GiB / 15.57GiB
9a14993f1238        0.08%               1.123GiB / 15.57GiB

Или комбинируйте эти команды:

docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}" 304cd30dbc10 74a23eb1bdf0

CONTAINER           CPU %               MEM USAGE / LIMIT
304cd30dbc10        2.52%               3.836GiB / 15.57GiB
74a23eb1bdf0        7.79%               3.152GiB / 15.57GiB
tweet Share