2KB项目,专业的源码交易网站 帮助 收藏 每日签到

Docker 中管理数据

  • 时间:2019-05-14 16:49 编辑:2KB 来源:2KB.COM 阅读:401
  • 扫一扫,手机访问
  • 分享
摘要:
Docker 英文原文:Managing data in containers

到今朝我们引见了一些Docker的根底观点, 晓得了怎么运用Docker的image, 也晓得了怎么在多个container间经过收集通信. 在这章里我们将引见怎么在docker的container内管理数据和怎么在分歧的container间同享数据。

我们将引见两种首要的在docker中管理数据的办法:

  • Data volumes

  • Data volume container

Data volumes

一个 data volume 就是一个在一个或许多个container里的特别用处的目次。它绕过了 Union File System (译者: 这里不断定, 需求研讨)为耐久化数据、同享数据供给了下面这一些有效的特征:

  • Data volumes 可以在分歧的container之间同享和重用数据

  • 对 Data volume 的修正实时生效(译者:data volumn是一个目次, 多个container都挂载这个目次, 详细的可以经过 docker inspect 看 volumne的信息)

  • 对 data volume 修正内容在晋级image的时分不会被包含出来 (译者:在docker的全部设计中image是一个无形态的, 如许对晋级重用十分有益。而标志形态的数据, 比方数据库的数据, 生产的log之类的应当放到volume里。volume的耐久化和恢复鄙人面有引见, 是经过文件的方式的, 而不是经过image)

  • Volumes 的耐久化直到没有container运用他们

添加数据卷

你可以在docker run 的时分运用 -v 来添加一个 data volume。这个参数在docker run 的时分可以屡次运用来添加多个 data volumes。让我们为我们的web application container挂载一个 volume。

$ sudo docker run -d -P --name web -v /webapp training/webapp python app.py

这里一个新的volume会创立到container里的 /webapp. (译者:假如你经过ssh或许经过 -i 登岸到你的container的一个shell里, 运用 ls /webapp 可以验证挂载成功了)

留意: 你也能够在Dockerfile里添加 VOLUME 字段,如许在创立一个新的image的 container是就会主动的创立新的volume.

安装一个目次作为数据卷

运用 -v 不只能创立一个新的 volume, 还可以把宿主机一个目次mount到container里。

$ sudo docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py

这条号令会把当地目次 /src/webapp mount到container里的 /opt/webapp 目次上。用这个办法来测试顺序十分便利, 比方我们可以把我们的源代码经过这个办法mount到container里, 修正当地代码后立刻就能够看到修正后的代码是怎么在container里任务的了。宿主机的目次必需是绝对途径, 假如这个目次不存在docker会为你主动创立。

留意 这里是没法用 Dockerfile完成的, 由于如许的用法有悖于可移植性和同享. 由于当地目次就像他名字通知我们的, 是和当地相干的, 纷歧定可以在一切的宿主机上任务.(译者: 鬼晓得你在运用image的时分的host是啥模样的)

Docker默许设置volume是可读写的,可是我们也能够mount一个目次为只读:

$ sudo docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py

这里我们异样mount了 /src/webapp 目次, 可是我们加入了 ro 参数, 通知docker这个volume是只读的.

创立并安装数据卷容器

假如你有一些耐久化的数据, 而且想在分歧的container之间同享这些数据, 或许想在一些没有耐久化的container中运用, 最好的办法就是运用 Data Volumn Container, 在把数据mount到你的container里.(译者:如开篇译者提到的docker的container是无形态的, 也就是说标志形态的数据,例如:数据库数据, 使用顺序的log 等等, 是不该该放到container里的, 而是放到 Data Volume Container里, 这点和funcational programming很像, 所以我爱好把普通的docker container 叫做 functional container用来辨别 data volume container )

让我们创立一个著名字的 Data Volume Container 来同享数据.

$ docker run -d -v /dbdata --name dbdata training/postgres

如许做以后就能够经过 --volumes-from 把 /dbdata mount到其他的container里了

$ docker run -d --volumes-from dbdata --name db1 training/postgres

还可以继续同享到别的一个container里

$ docker run -d --volumes-from dbdata --name db2 training/postgres

-volumes-from 可以屡次运用来 mount 多个conatainer里的多个volumes。

这个操作是链式的, 我们在db1 中经过 --volumes-from mount出去的 volume可以继续被其他container运用

$ docker run -d --name db3 --volumes-from db1 training/postgres

(译者: 这里我们不是间接运用 volume container, 而是运用db1 这个functional container 把volume 挂载到别的一个 funcational container上的,所谓的链式就是 dbdata -> db1 -> db3)

假如你把一切mount volumes的container都移除掉, 包含初始化的阿谁 dbdata container, volume才会被移除掉。经过这个属性可以便利的晋级晋级数据或许在分歧container间migrate数据.

备份、恢复和移植数据卷

Volume的别的一个用途就是备份、恢复和migrate数据。 详细的做法以下,运用 --volumes-from 来创立一个新的container mount这个volume

$ sudo docker run --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata

>    这里我们启动了一个新的container, 从 dbdata 挂载了一个volume。同时挂载了一个当地目次到这个container里。最初我们经过一个 tar号令把 dbdata 里的数据备份到了 /backup 里。号令完毕而且中止这个container后我们就在当地失掉了一个备份的数据.

(译者: 这里运用的 ubuntu container, 就是为了把volume中的数据打包备份到host的某一个目次里。)

备份的数据可以恢复到这个container, 或许其他运用这个volume的container。起首创立一个container

$ sudo docker run -v /dbdata --name dbdata2 ubuntu

>    以后un-tar备份文件到 data volume 里

$ sudo docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar

你可使用你爱好的Tools加入上面的技术来主动备份,迁徙和恢单数据

本文中的一切译文仅用于进修和交换目标,转载请务必注明文章译者、出处、和本文链接。 2KB翻译任务按照 CC 协议,假如我们的任务有进犯到您的权益,请实时联络我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部