到目前我们介绍了一些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,Red Hat新的虚拟化选择 http://www.linuxidc.com/Linux/2013-10/91051.htmdockerlite: 轻量级 Linux 虚拟化 http://www.linuxidc.com/Linux/2013-07/87093.htmDocker的搭建Gitlab CI 全过程详解 http://www.linuxidc.com/Linux/2013-12/93537.htmDocker 和一个正常的虚拟机有何区别? http://www.linuxidc.com/Linux/2013-12/93740.htm在 Docker 中使用 MySQL http://www.linuxidc.com/Linux/2014-01/95354.htmDocker 将改变所有事情 http://www.linuxidc.com/Linux/2013-12/93998.htm
Docker 1.0 正式版发布下载 http://www.linuxidc.com/Linux/2014-06/102941.htm
添加数据卷
你可以在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是只读的.
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2014-06/103608p2.htm
使用PDFBox解析PDF文件Docker —— 用于统一开发和部署的轻量级 Linux 容器相关资讯 Docker
- Docker 1.12.0 改进了服务的负载均 (今 20:20)
- docker-gitlab部署 (05月31日)
- Docker与虚拟机性能比较 (05月04日)
| - CentOS 7下为Docker容器分配固定IP (07月12日)
- docker-gitlab搭建使用及问题解决 (05月31日)
- Docker学习:Coreos+Docker+ (04月24日)
|
本文评论 查看全部评论 (0)