0

0

Docker官方论坛中回复最多的一个帖子“在数据容器内升级数据”

php中文网

php中文网

发布时间:2016-08-08 09:30:57

|

962人浏览过

|

来源于php中文网

原创

docker官方论坛中回复最多的一个帖子“在数据容器内升级数据”


matlehmann
我有一个含数据的容器,它有一个卷(比如在/var/data)中的持久性数据。该容器包含持久性数据对另一个容器的软件。
对于该软件的新版本,需要升级所述永久数据(结构或布局改变等)。其结果是,我想与在相同的位置已升级的数据的另一数据容器(在/var/data)和仍保留旧数据容器与它的数据不变。
这样一来,我可以用旧的数据容器与旧版本的软件,万一出了差错。
但是,我怎么能做到这一点?以实现所期望的结果所需要的步骤对我来说是不明显的。
我可以运行一个命令来升级容器像docker run -i -t --name temp --volumes-from data -v /upgraded image /upgrade_script.sh
但后来,我怎么将升级的数据恢复到原来的位置而没有覆盖旧的数据?如果我运行docker run -i -t --volumes-from temp image cp /upgraded /var/data,它将覆盖我的旧数据。我必须使用主机安装的卷为升级的数据,或者是有一些更好的解决方案?

sam
只是猜测,因为这里一般我更喜欢使用直主机安装卷和我苦苦寻找数据容器的效用。
但是......你能不能提交你的数据容器,然后保存映像等?
sven
哦,也请考虑使用docker commit快照容器SAM的建议迷死人了
keeb
我实际使用的数据容器,如UNIX管道;我觉得他们适合更自然在范式
docker run -name some_pipe_storage some_container_which_generates_data
docker run --volumes-from some_pipe_storage something_that_operates_on_data
语法,相当繁琐。非常强大却比较原始。

sven
有一些有趣的工作,关于加入卷的管理工具docker是怎么回事 - 我认为他们是前往1.4,我会做一些调查。 (有将是一个docker卷列表和操纵的东西)
我可能会做一个backup_data卷的容器中,然后运行一个数据迁移的形象,我想运行连接到数据和backup_data - 它可能做的第一件事是复制了从数据到backup_data,然后它会做的数据迁移。
然后你就可以运行旧的和新的,连接到每个各自databackend(与可能附着只读的备份?)
这样做,如果你使用的主机安装的应几乎是一样的,无论是直接或通过数据容器的风格代表。

matlehmann
您的建议是我的第一个想法行,但它并不符合我的预期,因为该过程后,迁移数据和原始数据将根据不同的路径,我看不出有什么办法改变这种状况,因为非主机卷不能被重新安装到不同的路径。从一个数据容器的体积的路径是静态的 - 即使对于由“--volumes-from”继承卷容器。
这是主机体积不同,因为我可以在每个docker运行调用改变这些的挂载位置。
我认为这些卷管理工具,你说说是非常必要的。对于我来说,这个数据容器docker成语感觉更像是一个变通。
请问您在阐述“docker commit迷死人了”,因为我看不到它,然而。至少在用例在手。据我所知,一个docker提交给我,其中包含一个容器的当前状态的新形象。这样将包括除持久数据我感兴趣的所有OS数据。

sven
哦crud。你说得对,卷路径是目前静态的。所以你需要一个步骤
1.你有在/数据中的现有的数据容器
2.迁移到位于/迁移的临时数据容器(如你有原始安装)
3./迁移数据迁移到安装在新升级的数据容器/数据(第二迁移映像就不需要原来的数据容量装
@ cpuguy83也许能告诉你更多关于新工具的微笑
WRT docker commit - 当你commit,你是不是在一个单一的包含图像层的一切,你正在做一个新的图像层,包含所有容器中所做的更改(与图像容器启动时使用)。
所以,如果你使用的容器,而不是卷的持久性数据和卷掉之类的东西日志,你可以使用docker承诺快照/备份只是你的持久性数据 - 和docker的出口可能让你存储这些层。

cpuguy83
是啊,我不会信赖“commit”,因为你将被限制在127提交的,除非你拼合映像出来。
@matlehmann看到github.com/cpuguy83/docker-volumes
这离完美的解决方案还远着呢,但在此期间工作相当不错

matlehmann
@Sven感谢您的答复,并了解更多信息。我还是不明白第3步的“/迁移数据迁移到安装在/数据的新升级的数据容器(第二次迁移映像就不需要原来的数据容量装”,因为它目前是(与docker1.2和无特殊卷命令),我不看我怎么可以有一个容器与另一个容器体积 - 他们的一部分安装的,其中一部分没有安装就我所看到的,它要么全有或全无,要么以"--volumes-from other_container"或没有。因此,如果迁移容器from步骤2具有原始数据装入,该容器在步骤3它已安装,也因此在复制操作从 /mifrated到/data将覆盖原始数据。还是我失去了一些东西?
有关“commit”命令谢谢您的提示,我需要思考这个多一点准备。

matlehmann
@keeb这是一个很好的模式,但据我看到的,它并没有解决这个问题,我在说什么。所有这些“管道”容器仍然会以“some_pipe_storage”的体积而不能创建一个不同的容器中,在一个给定的路径不同的数据,而不会覆盖原有的数据。但是,也许我想念你的观点?

sven
嗯,让我们看看,如果我能作出这样的解释是一个例子:
假设有人已经创造了一些Docker 映像,webappv10,webappv11,webapp_migratorv10_to_v11。
最初,你会已经运行的基于1.0系统
docker run -v /data --name datav10 busybox true
docker run -p 80:80 --volumes-from datav10 --name webv10 webappv10
然后升级,要求你的数据给我升级了,你会做第2步(正如你指出,我们不能有两个卷在相同目录)
docker run -v /migration --name datav10-to-v11 busybox true
docker run --volumes-from datav10-to-v11 --volumes-from datav10 --name migration webapp_migratorv10_to_v11
然后步骤3,对复制的数据迁移到一个新的数据容器,在/数据目录中的数据,准备使用
docker run -v /data --volumes-from datav10-to-v11 --name datav11 busybox cp -r /migration /data
然后运行1.1版Web应用程序
docker run -p 80:80 --volumes-from datav11 --name webv11 webappv11
而额外的信用,你最好脚本化这一切。
更新到datav10到V11卷容器一步增加是由于下面的讨论

matlehmann
@sven 再次感谢您详细的解答。我很欣赏你的思想和时间。
但是,您勾勒的程序不起作用。它叫装有“-v”卷推翻一个体积继承“"--volumes-from”同一路径的假设。我刚再次测试它,以确保,但这种情况并非如此。这就是为什么docker run -v /data --volumes-from migration --name datav11 busybox cp -r /migration /data将覆盖我的原始数据的容器datav10。

sam
它有你喜欢一个数据容器在一个简单卷一个特别的原因(也就是更容易通过感觉意会/处理)

sven
我很困惑。精心制作的步骤,以便有永不2卷从包含/数据迪尔斯语句。我们使用迁移一个缓冲区,然后我们将其复制到新的数据V11容器。
@sam - 有一个绑定安装的量和体积容器之间这么一点概念上的差异 - 你还在做同样的3个步骤 - 对我来说最大的区别是,绑定坐骑只能在本地,并且假设你有磁盘空间为它(不是我做的),而体积容器方法假定您Docker ,数据分区是大到足以运行Docker 的容器,和作品一样的本地远程。
如果你改变了docker run -v /data ... lines to docker run -v /local/data:/data ..., 那么你使用bind mounts绑定安装,代表。

matlehmann
@SAM我现在切换到使用bind-mounted 绑定安装的(或任何官方用语是"-v /host:/container") 卷,而不是使用数据容器,因为在这个线程中列出的缺点。我开始使用数据容器,因为成语的使用和推荐的所有在互联网上,似乎是“官方方式”。

matlehmann
@sven
?"datav10" has ?"/data" (via -v /data)

Musho
Musho

AI网页设计Figma插件

下载

?"migration" has ?"/data" (via --volumes from datav10)
?"/migration" (via `-v /migration')

?"datav11" has ?"/data" (via -v /data)
?"/migration" (via --volumes from migration)
?"/data" (via --volumes-from migration)

因此,我们有“/data”容器“datav11”两卷定义 - 对我来说它看起来就像从--volumes-from 胜利之一。

sam
@sven我想我只是在努力找出你将存储在AUFS数据的原因,这似乎是一种错误的文件系统用于这个问题。 BTRFS将是确定的,但似乎aufs的日志文件,一个奇怪的选择,Postgres数据库用的等等。我误解数据容器的机制?

@matlehmann我们用“卷”广泛。
?我们店外容器的主机安装卷,便于旋转和持久性的所有日志。 (这里是另一种选择是将流出来的容器,但机制是不平凡的,想想说的NGINX的容器,你用日志呢?)
?我们存储一些配置一个安装GlusterFS卷上,所以我们能吸收的东西横跨农场

matlehmann
@sven这将是另一个线程的话题:我真的很希望听到你的GlusterFS设置。有没有准备好使用可用的映像,可以作为GlusterFS内像一个代表卷或你怎么做呢?

sam
@supermathie将是最适合我们的GlusterFS设置的详细信息,但它是在一个非常传统的方式,所有的设置,我们不使用受信任的docker容器上电Gluster的。

sven
OH(*&^,你说得对。
我想我是如此聪明删除一步。
你需要把/迁移文件夹到自己的数据容器,这样就可以避免你在最后一步注意的问题。
我已经更新一步的例子步骤,以反映这一

sven
是的,有一些东西WRT文件系统待解决 - 我docker的大多是BTRFS运行。
我认为,使用绑定,安装工程量太 - 但我仍然会做链接到它们,然后使用相同的过程,以上数据体积的容器。

matlehmann
@sven谢谢。我没有尝试这个,但它是有道理的。这是一个尴尬的疯狂鸡起舞,但它可能工作...翘首等待的卷命令。

sven
是的,我专注在笨拙的鸡 - 期待与这些版本,和烤鸡腿来馋嘴

 

本文翻译自Docker官方论坛:https://forums.docker.com/t/upgrade-data-within-data-container/205/20

以上就介绍了docker官方论坛中回复最多的一个帖子“在数据容器内升级数据”,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

705

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

233

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

117

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

22

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

61

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

30

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

669

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

58

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
光速学会docker容器
光速学会docker容器

共33课时 | 2万人学习

Docker 17 中文开发手册
Docker 17 中文开发手册

共0课时 | 0人学习

极客学院Docker视频教程
极客学院Docker视频教程

共33课时 | 18万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号