Устранение влияния UnionFS на результаты при тестировании в Docker
Я пытаюсь сравнить общую производительность системы при запуске Docker с использованием Phoronix Test Suite 6.4.0 Milestone 2, работающего внутри контейнера на основе изображений fedora:23.
Одна вещь, которая должна быть учтена, это то, что Docker использует проприетарную систему UnionFS для хранения данных. Однако при запуске реального приложения (такого как Apache) внутри Docker постоянные данные обычно хранятся в специальной папке на хосте, работающей в стандартной файловой системе Linux, такой как ext4, или в моем случае btrfs.
Решение, которое я предлагаю, состоит в том, чтобы использовать " том докера" для монтирования каталога хоста в докер. Дело в том, что я не знаю, какие каталоги должны использоваться в тестах и должны быть установлены внутри контейнера Docker.
Например, тестовый пакет pts / disk должен определенно использовать тома докера вместо UnionFS. Он содержит эти тесты.
pts/compress-gzip
pts/sqlite
pts/apache
pts/pgbench
pts/compilebench
pts/iozone
pts/dbench
pts/fs-mark
pts/fio
pts/tiobench
pts/postmark
pts/aio-stress
pts/unpack-linux
Какие каталоги в контейнере Docker должны быть смонтированы с хоста (сделанные тома Docker)? Это даже хорошая идея использовать тома докера? Есть ли еще какие-то предостережения, которые следует учитывать при тестировании Docker?
1 ответ
Как упоминалось в разделе "Монтирование тома общего хранилища как тома данных "
Помимо монтирования каталога хоста в вашем контейнере, некоторые подключаемые модули Docker для тома позволяют вам предоставлять и монтировать общее хранилище, такое как iSCSI, NFS или FC.
Начиная с докера 1.9, это делается с docker volume create
(а затем вы монтируете эти тома по их ожидаемым путям в контейнере)
Это позволяет вам:
- сделать эти тома независимыми от хоста
- по-прежнему обходить UFS
- эксперименты с различными плагинами громкости Docker
- сравнить их показатели производительности
Какие каталоги в контейнере Docker должны быть смонтированы с хоста
Любая папка, которая содержит постоянные данные и / или имеет большой объем операций ввода-вывода.