如何在Docker中处理持久性存储(例如数据库)

如何在Docker中处理持久性存储(例如数据库),第1张

如何在Docker中处理持久性存储(例如数据库) Docker 1.9.0及更高版本

使用体积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 创建容器,则会自动为您创建一个命名卷,该卷可以:

  1. 通过列出
    docker volume ls
  2. 通过识别
    docker volume inspect volume_name
  3. 备份为普通目录
  4. 通过
    --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.xdocker volume prune
Docker 1.8.x及以下

最适合生产的方法是使用 仅数据容器

仅数据容器在准系统图像上运行,除了暴露数据量外,实际上不执行任何 *** 作。

然后,您可以运行任何其他容器来访问数据容器卷:

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.tardata/data/sven.txt# Compare to the original container$ sudo docker run --rm --volumes-from DATA -v `pwd`:/backup busybox ls /datasven.txt

这是优秀的Brian Goff的一篇不错的文章,解释了为什么对容器和数据容器使用相同的图像会很好。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/4973143.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存