2016-08-28 2 views
5

У меня есть контейнер докеров, который делает много чтения/записи на диск. Я хотел бы проверить, что происходит, когда вся моя файловая система докеров находится в памяти. Я видел здесь несколько ответов, в которых говорится, что это не будет реальное улучшение производительности, но это для тестирования.Docker: в файловой системе памяти

Идеальное решение, которое я бы хотел протестировать, это совместное использование общих частей каждого изображения и копирование в пространство памяти, если это необходимо.

Каждый файл контейнера, который создается во время выполнения, должен быть также в памяти и разделен. он должен быть не более 5 ГБ фс в режиме простоя и до 7 ГБ во время обработки.

Простые решения позволят дублировать все общие файлы (даже те части ОС, которые вы никогда не используете) для каждого контейнера.

ответ

5

Нет никакой разницы между хранением изображения и базовой файловой системой контейнера, многоуровневая FS обращается к слоям изображений непосредственно как уровень RO, а контейнер использует слой RW выше, чтобы поймать любые изменения. Поэтому ваша цель иметь контейнер, работающий в памяти, пока установка Docker остается на диске, не имеет простой реализации.

Если вы знаете, где происходит ваша RW-активность (довольно легко проверить docker diff работающего контейнера), лучшим вариантом для меня будет tmpfs, смонтированный в этом месте в вашем контейнере, который изначально поддерживается докере (от docker run reference):

$ docker run -d --tmpfs /run:rw,noexec,nosuid,size=65536k my_image 
+0

Отлично! Спасибо, что упомянул 'docker diff' ✨ –

1

Докеры хранят изображения, контейнеры и данные тома в своей папке по умолчанию. Контейнерные HD-файлы сделаны из исходного изображения и «контейнерного слоя».

Возможно, вы сможете установить это с помощью RAM disk. Вы бы выделили некоторую ОЗУ, смонтировали ее и отформатировали с помощью своей файловой системы. Затем move your docker installation на установленный RAM-диск и передайте его обратно в исходное местоположение.

Setting up a Ram Disk

Best way to move the Docker directory

Очевидно, что это полезно только для тестирования, как Докер и это изображения, объемы, контейнеры и т.д. будут потеряны при перезагрузке.

+0

Я хочу, чтобы контейнер HD был в памяти, а не установка докера на хост. – qballer

+0

Докер сохраняет данные изображения, контейнера и объема в своей директории по умолчанию. Контейнерные HD-файлы сделаны из исходного изображения и «контейнерного слоя». https://docs.docker.com/engine/userguide/storagedriver/imagesandcontainers/ –

+0

Возможно, лучше использовать это, но я не пробовал: https://docs.docker.com/registry/storage-drivers/inmemory/Кроме того, Linux и другие ОС имеют встроенное кэширование дисков, поэтому доступ к диску вашего контейнера может вообще не попасть в реальный диск. – sudo

Смежные вопросы