Запустите весь докер-контейнер с томами, смонтированными в памяти - PullRequest
1 голос
/ 08 апреля 2019

Я хотел бы запустить весь докер-контейнер в памяти без привязки томов к жесткому диску хоста.

Описанная здесь TMPFS помогает монтировать тома как «тома памяти», но яищу способ, как запустить весь контейнер, сопоставленный с памятью.

--volume-driver возможно, что мне нужно использовать, но я не могу найти документированный список поддерживаемых драйверов (не overlay2).

Итак, я попробовал:

docker run -td --name my-container --volume-driver tmpfs container-image
docker run -td --name my-container --volume-driver memfs container-image

Но в обоих случаях, с docker inspect my-container я заметил, что:

    "GraphDriver": {
        "Data": {
            "LowerDir": "/var/lib/docker/overlay2/d1d112972c6b531976dd33e27edf213fc578856c3ee96b99c9afe53ad3f71a5e- ... /diff",
            "MergedDir": "/var/lib/docker/overlay2/d1d112972c6b531976dd33e27edf213fc578856c3ee96b99c9afe53ad3f71a5e/merged",
            "UpperDir": "/var/lib/docker/overlay2/d1d112972c6b531976dd33e27edf213fc578856c3ee96b99c9afe53ad3f71a5e/diff",
            "WorkDir": "/var/lib/docker/overlay2/d1d112972c6b531976dd33e27edf213fc578856c3ee96b99c9afe53ad3f71a5e/work"
        },
        "Name": "overlay2"
    }

docker stats также указывает мне, что оба случаяиспользуется стратегия отображения по умолчанию.

1 Ответ

1 голос
/ 08 апреля 2019

Существует проблема, которая была закрыта, чтобы сделать именно это. Вот ссылка на комментарий https://github.com/moby/moby/issues/10490#issuecomment-311892718.

По сути, он настраивает докер для сохранения изображений в оперативной памяти. Он будет делать то, что вы хотите, но вы потеряете свои изображения, если вы выключите.

Теперь я не уверен, почему вы этого хотите, но я экстраполирую то, что, как я думаю, может вам понадобиться:

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

  • Вы не хотите, чтобы какие-либо данные, которые вам нужно было записать, были сохранены на диске по соображениям безопасности: тогда вам нужно будет смонтировать tmpfs (https://docs.docker.com/engine/reference/run/#tmpfs-mount-tmpfs-filesystems) где-нибудь в вашем контейнере и только записать Пожалуйста, имейте в виду, что если используется своп, контент будет записан на диск и потенциально восстановим.

  • Вам нужно быстрое чтение данных, уже присутствующих в контейнере: тогда я думаю, что вам лучше всего делать так, чтобы при запуске вашего контейнера копировать данные, к которым вам нужен быстрый доступ, в tmpfs, смонтированном в контейнере.

Надеюсь, я уловил ваш вариант использования и помог, если нет, скажите, пожалуйста:)

...