如何在Docker中处理持久性存储(例如数据库)
人们如何处理Docker容器的持久性存储?
我当前正在使用这种方法:构建映像(例如针对PostgreSQL),然后使用以下命令启动容器
docker run --volumes-from c0dbc34fd631 -d app_name/postgres
恕我直言,这有一个缺点,我绝对不能(偶然)删除容器“ c0dbc34fd631”。
另一个想法是将主机卷“-v”安装到容器中,但是, 的容器内不一定匹配 从主机,然后权限可能会混乱。
注意:例如,--volumes-from 'cryptic_id'
您可以使用--volumes-from my-data-
containerwhere my-data-container
是分配给仅数据容器的名称,而不是docker run --name my-data-
container ...(请参见接受的答案)
回答:
回答:
使用体积API
docker volume create --name hellodocker run -d -v hello:/container/path/for/volume container_image my_command
这意味着必须放弃仅数据的容器模式,而使用新的卷。
实际上,卷API只是实现数据容器模式的一种更好的方法。
如果您使用-v volume_name:/container/fs/path
Docker 创建容器,则会自动为您创建一个命名卷,该卷可以:
- 通过列出
docker volume ls
- 通过识别
docker volume inspect volume_name
- 备份为普通目录
- 通过
--volumes-from
连接像以前一样备份
新的卷API添加了一个有用的命令,可用于标识悬空的卷:
docker volume ls -f dangling=true
然后通过名称删除它:
docker volume rm <volume name>
正如@mpugach在注释中强调的那样,您可以使用一个漂亮的衬里摆脱所有悬空的体积:
docker volume rm $(docker volume ls -f dangling=true -q)# Or using 1.13.x
docker volume prune
回答:
最适合生产的方法是使用 。
仅数据容器在准系统图像上运行,除了暴露数据量外,实际上不执行任何操作。
然后,您可以运行任何其他容器来访问数据容器卷:
docker run --volumes-from data-container some-other-container command-to-execute
- 在这里,您可以很好地了解如何布置不同的容器。
- 在这里,您可以很好地了解卷的工作方式。
在此博客文章中,对所谓的 有很好的描述,阐明了 具有
要点。
Docker文档现在将 的定义描述
模式。
以下是Docker 1.8.x及以下版本的备份/还原过程。
sudo docker run --rm --volumes-from DATA -v $(pwd):/backup busybox tar cvf /backup/backup.tar /data
- --rm:退出时删除容器
- --volumes-from DATA:附加到DATA容器共享的卷
- -v $ {pwd):/ backup:将当前目录绑定安装到容器中;将tar文件写入
- busybox:更简单的图像-便于快速维护
- tar cvf /backup/backup.tar / data:创建/ data目录中所有文件的未压缩tar文件
# Create a new data container$ sudo docker run -v /data -name DATA2 busybox true
# untar the backup files into the new container᾿s data volume
$ sudo docker run --rm --volumes-from DATA2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar
data/
data/sven.txt
# Compare to the original container
$ sudo docker run --rm --volumes-from DATA -v `pwd`:/backup busybox ls /data
sven.txt
这是优秀的Brian Goff的一篇不错的文章,解释了为什么对容器和数据容器使用相同的图像会很好。
以上是 如何在Docker中处理持久性存储(例如数据库) 的全部内容, 来源链接: utcz.com/qa/403033.html