• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > Managing Data in Containers,managingcontainers

Managing Data in Containers,managingcontainers

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含in containers,managing director,managing,managing partner,managing editor等服务器相关知识,网友希望可以进行参考

Managing Data in Containers,managingcontainers


前面已经介绍了许多基础的知识,现在我们来一起学习如何管理Docker容器里面以及容器之间的数据

先介绍两种原始的方法来管理Docker中的应用

  • ata volumes
  • Data volume container

Data volumes

data volumns是专门设计的工具,它绕过了UFS直接工作与一个或多个容器。它为数据持久和分享提供了许多功能:

  • 容器被创建时,卷(volumn)被初始化。如果基础镜像在指定的挂载点包含数据,这些数据也会被复制到新容器的卷中。
  • 数据卷可以在多个容器间分享和复用
  • 可以直接更改卷里面的数据
  • 更新镜像时对容器数据卷的更改将不会被包含到新的镜像中
  • 即使容器被删除,数据卷依然存在

数据卷的设计被用来持久化数据,让数据能够独立于容器的生命周期。因此当删除容器时Docker也不会自动删除数据卷。

Adding a data volume

增加数据卷

docker create -v和docker run -v中的-v标记来给容器添加数据卷,我们可以在一条命令中多次使用-v标记来添加多个数据卷,下面的例子挂载了一个数据卷在我们的web应用容器中。

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

这条命令执行后会在容器中创建一个新的卷webapp

Mount a Host Directory as a Data Volume

为数据卷挂在主机目录

除了使用-v标记来创建卷之外,你还可以挂载Docker守护进程主机的目录到容器中。

注意:如果你使用Boot2Docker,那么你的Docker守护进程只能被限制访问OSX/windows特定的文件目录。Boot2Docker会努力自动分享OSX中的/users目录和windows中的C:users目录。因此你可以通过docker run -v /Users/<path>:/<container path> … (OSX)或者docker run -v /c/Users/<path>:/<container path ...(Windows).来挂在文件或目录。所有的其它路径(不是/users和C:users)都来自Boot2Docker虚拟机中的文件系统。

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

上述命令会把主机的/src/webapp目录挂在到容器中的/opt/webapp下

注意:如果/opt/webapp目录已经存在与容器的镜像中,那么/opt/webapp中的内容会被主机上的/src/webapp中的数据替换,这个和mount命令是一致的。

数据卷挂在数据对测试非常有用,比如我们可以把源代码挂在到容器中,然后修改代码看看应用会发生什么。主机上的目录必须是绝对路径,如果这个目录不存在Docker会自动去创建1个。

注意:不能在Dockerfile中来配置挂载目录,因为Dockerfile的目的是更方便的来一直和分享镜像,而主机目录依赖于主机,(对于一个目录,在不同的主机上可能绝对路径不一致)所以Dockerfile中目录挂载不会适用于所有的主机

挂载的数据卷默认是可读写的,当然我们可以通过命令标记来让它只读

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

上述命令中我们通过ro选项来让数据卷只读

Mount a Host File as a Data Volume

挂载主机文件作为数据卷

-v标记还可以用来挂在来自主机的文件,而不仅仅是目录

docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash

上述命令会带你到一个新容器的shell界面,你会有来自主机的bash历史。因为容器和主机共享了一个.bash_history文件,所以你在容器中的命令历史和主机中的历史都会记录到.bash_history中,这样当你退出容器中时,你在容器中的命令历史被保存下来了,在主机的shell历史记录中仍然能够看到容器中的历史。

注意:人们会使用很多工具来编辑文件,vi,sed --in-place,这些都会导致文件的索引节点改变。Docker 1.1.0之前,文件修改会报如sed: cannot rename ./sedKdJ9Dy: Device or resource busy这样的错误。但是在Docker 1.1.0之后,挂载文件让文件修改变得非常简单而不需要再去挂在包含这个文件的父目录了。

Creating and mounting a Data Volume Container

创建一个专门防数据的数据卷容器

如果你有一些持久化的数据需要在容器之间共享,或者想从非持久化容器使用持久化数据。最好的办法是创建名为Data的卷容器,把数据都挂在到Data容器里
我们创建一个能分享数据的命名容器,他不运行任何应用,它重复使用training/postgres镜像以便所有的容器使用同一个层,这样可以节省磁盘空间。

docker create -v /dbdata --name dbdata training/postgres /bin/true

我们使用--volumes-from标记来绑定/dbdata卷到另一个容器

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

或者

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

在是上述的例子中,我们在容器中挂在了/dbdata卷,如果恰巧镜像training/postgres中也有/dbdata这个目录,那么容器会隐藏镜像的目录,而让容器中的/dbdata目录可见,新建多个数据容器同样是隐藏镜像的文件而显示容器中的文件,这种机制实现了数据卷的数据共享。
你可以在一条命令中使用多个--volumes-from标记参数把多个容器的数据卷绑定在一起。
上述的代码中db1和db2是挂载dbdata这个容器来扩展的,你也可以挂载db1或者db2来扩展你的数据卷。

 docker run 


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Managing Data in Containers,managingcontainers

相关文章

  • Hive作为Mondrian的数据源,hivemondrian
  • Zoho产品经理谈中小企业面临的挑战及应对之策,zoho产品经理
  • Hadoop之——Java操作HBase,hadoopjavahbase
  • MapReduce处理二次排序(分区-排序-分组),mapreduce二次
  • hive SymlinkTextInputFormat介绍及用法,textinputformat
  • -bash:jps:command not found,-bashjps
  • 当代数学七大难题,当代七大难题
  • 大数据分析与应用的8个场景
  • (Kilo)Devstack Kilo版本localrc推荐,devstacklocalrc
  • spark core源码分析9 从简单例子看action操作,sparkcore

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • 关于Oozie的input-events和done-flag,oozieinput-events
    • K天熟悉Apache Storm (三),apachestorm
    • 《转》OpenStack Live Migration,《转》openstack
    • kafka 效率优化,kafka优化
    • H3C config vlan access and trunk links,h3ctrunk
    • hive创建表语句详解,hive语句详解
    • pig里面没有if:不能判断一个条件后决定一个执行步骤,pigif
    • openstack:cinder-volume配置lvm/glusterfs/IP-SAN等多种后端,openstacklvm
    • Hbase详解—–管理 Splitting,hbase详解splitting
    • Zookeeper常见问题整理,zookeeper常见问题

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有