manage_data_in_containers
2015-06-02 18:23
423 查看
docker中有两种基本的方式来管理container中的data
(1)、data volume
(2)、data volume containter
1、Data volumes
A data volume is a specially-designated directory within one or more containers that bypasses the Union File System. Data volumes provide several useful features for persistent or shared data:
数据卷是一个容器或多个容器含有的一个特殊设计的目录,这个目录通过UFS文件系统管理;数据卷可以为数据持久化和数据共享提供下面的特征:
(1)、Volumns在container创建时进行初始化,如果container的base image包含指定mount point的数据,该数据会copy到新volume。
(2)、data volumes 可以在container中shared and reuse。
(3)、data volumes的change是directly made。
(4)、对image的update不会对data volumes造成change。
(5)、即使container删除了,data volumes仍然存在。
data volumes设计用来支持数据持久化,它独立于container的生命周期。
在docker create和docker run命令中加-v标识来对contianer添加data volumes。可以使用-v多次添加多个data volumes。
docker run -d -P --name web -v /webapp training/webapp python app.py
上面的命令是为 web 容器中创建一个卷/webapp。
(可以在dockerfile中使用VOLUME指令添加卷)
docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py
将docker host上的/src/webapp目录mount到container的data volumes /opt/webapp上,(若container中存在/opt/webapp,它的内容会被docker host上的/src/webapp覆盖,
若docker host上/opt/webapp目录不存在,docker会为其创建)
注:不能通过dockerfile来mount docker host的目录到container的data volumes上,因为dockerfile中设及的目录为container私有,不能用于share。
mount目录设为readonly
docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py
mount docker host上文件到container中的data volumes。
docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash
2、data volume containter
creating and mount data volume containter
如果你有一些持久化数据想在多个container中进行shared
可以先创建一个带有volumes的容器,然后把数据mount到容器中,在创建其他容器可以mount这个容器中的volumes数据。
(1)、创建带有volumes /dbdata的容器dbdata
docker create -v /dbdata --name dbdata training/postgres /bin/true
(2)、创建容器volume来自 dbdata容器中
docker run -d --volumes-from dbdata --name db1 training/postgres
docker run -d --volumes-from dbdata --name db2 training/postgres
可以多次使用--volumes-from挂载多个volumes,也可以使用--volumes-from链式挂载volumes
docker run -d --name db3 --volumes-from db1 training/postgres
db3————db1————dbdata
删除mount volumes的容器,默认不会删除volumes,需要显示使用docker rm -v指定mount的volume
3、备份
使用下面的命令可以备份volumes数据/dbdata为当前目录下backup.tar
docker run --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata
创建一个带有volumes数据的dbdata2容器
docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
restore数据
docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar
(1)、data volume
(2)、data volume containter
1、Data volumes
A data volume is a specially-designated directory within one or more containers that bypasses the Union File System. Data volumes provide several useful features for persistent or shared data:
数据卷是一个容器或多个容器含有的一个特殊设计的目录,这个目录通过UFS文件系统管理;数据卷可以为数据持久化和数据共享提供下面的特征:
(1)、Volumns在container创建时进行初始化,如果container的base image包含指定mount point的数据,该数据会copy到新volume。
(2)、data volumes 可以在container中shared and reuse。
(3)、data volumes的change是directly made。
(4)、对image的update不会对data volumes造成change。
(5)、即使container删除了,data volumes仍然存在。
data volumes设计用来支持数据持久化,它独立于container的生命周期。
在docker create和docker run命令中加-v标识来对contianer添加data volumes。可以使用-v多次添加多个data volumes。
docker run -d -P --name web -v /webapp training/webapp python app.py
上面的命令是为 web 容器中创建一个卷/webapp。
(可以在dockerfile中使用VOLUME指令添加卷)
docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py
将docker host上的/src/webapp目录mount到container的data volumes /opt/webapp上,(若container中存在/opt/webapp,它的内容会被docker host上的/src/webapp覆盖,
若docker host上/opt/webapp目录不存在,docker会为其创建)
注:不能通过dockerfile来mount docker host的目录到container的data volumes上,因为dockerfile中设及的目录为container私有,不能用于share。
mount目录设为readonly
docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py
mount docker host上文件到container中的data volumes。
docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash
2、data volume containter
creating and mount data volume containter
如果你有一些持久化数据想在多个container中进行shared
可以先创建一个带有volumes的容器,然后把数据mount到容器中,在创建其他容器可以mount这个容器中的volumes数据。
(1)、创建带有volumes /dbdata的容器dbdata
docker create -v /dbdata --name dbdata training/postgres /bin/true
(2)、创建容器volume来自 dbdata容器中
docker run -d --volumes-from dbdata --name db1 training/postgres
docker run -d --volumes-from dbdata --name db2 training/postgres
可以多次使用--volumes-from挂载多个volumes,也可以使用--volumes-from链式挂载volumes
docker run -d --name db3 --volumes-from db1 training/postgres
db3————db1————dbdata
删除mount volumes的容器,默认不会删除volumes,需要显示使用docker rm -v指定mount的volume
3、备份
使用下面的命令可以备份volumes数据/dbdata为当前目录下backup.tar
docker run --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata
创建一个带有volumes数据的dbdata2容器
docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
restore数据
docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar
相关文章推荐
- 使用Rails 4.2+ 测试异步邮件系统
- 经常发Email,你知道“抄送(Cc)”、“密送(Bcc)”的意思吗?
- rails测试错误 false to respond to ‘false?'
- LeetCode219:Contains Duplicate II
- LeetCode_11---Container With Most Water
- setContentView(R.layout.activity_main) Error解决方法
- [ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.3.1:
- email验证
- icvCreateHaarTrainingData和icvCreateBackgroundData
- OpenCms 9.5.1 Container嵌套关系和配置
- AIX 上总有一种压缩方式适合你
- select – Wait for I/O Efficiently
- LeetCode Contains Duplicate II Contains Duplicate III
- xfs文件系统修复方法
- Inheritance and the prototype chain
- tmpFile.renameTo(classFile) failed 错误
- ORA-01078: failure in processing system parameters
- 正确使用Block避免Cycle Retain和Crash
- 无线显示技术:WiDi,WLAN Display,Air Play,Miracast的摘抄
- http://developer.baidu.com/map/jsdemo.htm#a2_1