在许多docker示例中我都缺少一些东西,那就是持久性数据。如果我得出结论,每个停止的容器都会丢失它的数据,我是对的吗?
我使用它的内部数据库运行了这个Prestashop图像: https://hub.docker.com/r/prestashop/prestashop/
您只需运行docker run -ti --name some-prestashop -p 8080:80 -d prestashop/prestashop
那么你有你的演示,但不是很实用。 首先,我需要挂钩外部MySQL容器,但是如果我的服务器重新启动,那么它也会丢失所有数据。
那么将要添加到prestashop容器的所有模块和主题呢?
它与Volumes有关,但我不清楚如何正确映射所有主机卷以及通常选择通向主机的路径。 / opt / prestashop呃什么?
答案 0 :(得分:2)
首先,我对PrestaShop没有任何经验。这是一个示例,您可以将其用于每个docker容器(您希望从中保存数据)。 使用新版本的docker(1.11),可以很容易地“保留”您的数据。 首先创建您的命名卷:
docker volume create --name prestashop-volume
您将在/var/lib/docker/volumes
中看到此卷:
的Prestashop体积
创建命名卷容器后,可以将容器与卷容器连接:
docker run -ti --name some-prestashop -p 8080:80 -d -v prestashop-volume:/path/to/what/you/want/to/persist :prestashop/prestashop
(当你真的想坚持一切时,我认为你可以使用路径:/
)
现在,您可以在数据库中执行所需操作。 当您的容器关闭或删除容器时,指定的卷仍然存在,您可以使用命名卷重新连接容器。
为了让您更轻松,您可以创建一个cron-job,创建/var/lib/docker/volumes/prestashop-volume/
内容的.tar
当真的一切都消失了,你可以通过重新创建命名卷来恢复你的卷,然后解压缩你的.tar文件。