Я знаю, что общая мудрость при использовании докеров заключается в перемещении данных из контейнера и использовании вместо них томов.
Но я пытаюсь создать систему, которая обеспечивает полностью контейнерный метод установки одним щелчком мыши, и сказать, что «сначала вы должны установить mongodb на свой компьютер», не вариант.
Таким образом, текущее решение состоит в том, чтобы хранить сами данные в контейнере (например, MongoDB), но теперь я ищу способы резервного копирования моментального снимка самого контейнера время от времени, чтобы я мог мгновенно создать идентичный контейнер. с нуля, когда кто-то выходит из строя.
Как я могу этого добиться?
> Сказать «сначала вам следует установить mongodb на свой компьютер» - не вариант. Вам не нужно устанавливать mongodb, чтобы сохранить объем с данными mongodb.
Взгляните на этот пост stackoverflow.com/questions/26331651/…


Вы можете использовать докер коммит.
С docker commit вы создаете новый образ из изменений контейнера.
Из документации вы можете указать, что это касается вашего варианта использования:
It can be useful to commit a container’s file changes or settings into a new image. This allows you to debug a container by running an interactive shell, or to export a working dataset to another server. Generally, it is better to use Dockerfiles to manage your images in a documented and maintainable way. Read more about valid image names and tags.
The commit operation will not include any data contained in volumes mounted inside the container.
Вы можете использовать docker commit для создания снимков из контейнера.
См. Этот Почта для получения дополнительной информации.
Если вы не хотите использовать тома, вы можете сохранить свой контейнер в определенное время с помощью docker commit --change "added some changes to my container" <container_id> repo/image:tag.
Новый образ будет содержать всю файловую систему вашего текущего контейнера.
При этом неиспользование громкости имеет несколько недостатков:
По умолчанию все файлы, созданные внутри контейнера, хранятся на уровне контейнера с возможностью записи. Это значит, что:
The data doesn’t persist when that container is no longer running, and it can be difficult to get the data out of the container if another process needs it. A container’s writable layer is tightly coupled to the host machine where the container is running. You can’t easily move the data somewhere else. Writing into a container’s writable layer requires a storage driver to manage the filesystem. The storage driver provides a union filesystem, using the Linux kernel. This extra abstraction reduces performance as compared to using data volumes, which write directly to the host filesystem.
Так что лучше всего использовать объем! Теперь вы можете выбирать между разными видами:
While bind mounts are dependent on the directory structure of the host machine, volumes are completely managed by Docker. Volumes have several advantages over bind mounts:
Volumes are easier to back up or migrate than bind mounts. You can manage volumes using Docker CLI commands or the Docker API. Volumes work on both Linux and Windows containers. Volumes can be more safely shared among multiple containers. Volume drivers let you store volumes on remote hosts or cloud providers, to encrypt the contents of volumes, or to add other functionality. New volumes can have their content pre-populated by a container.
Прочтите документацию, чтобы лучше понять особенности тома: https://docs.docker.com/storage/volumes/
Вы можете легко экспортировать и импортировать контейнер докеров.
Экспорт всего контейнера в файл tar
docker export docker_container_name > latest.tar
Импортируйте контейнер Docker и запустите его
cat exampleimage.tar | docker import - exampleimagelocal:new
Полезная ссылка - Докер экспортДокер Импорт
Если вы хотите экспортировать образ Docker, тогда
docker save -o image.tar Docker_Image_Name
Импортировать образ Docker
docker load -i image.tar
а затем запустите образы докеров.
Я думаю, что вы могли бы достичь, выполнив вышеуказанное, в основном вам нужно использовать первый подход, экспортировать контейнер докеров и развертывать, когда вам это нужно, он будет содержать ваши старые данные.
Как использование тома - это не процесс в один клик?