docker学习总结六

数据管理
数据卷:容器内数据直接映射到主机环境
数据卷容器: 使用特定容器维护数据卷
数据卷
1. 创建数据卷
使用docker run,用-v标记可以在容器内创建一个数据卷。多次重复使用-v标记可以在容器内创建多个数据卷
下面使用lxc/webapp镜像创建一个容器,并创建一个数据卷挂载到容器的webapp目录,并运行app.py程序:
$ docker run -d -P --name web -v /webapp lxc/webapp python app.py
2. 挂载主机目录作为数据卷(推荐)
$ docker run -d -P --name web -v /src/webapp:/opt/webapp lxc/webapp python app.py
dokcer挂载数据卷的默认权限是读写(rw),用户也可以通过ro指定为只读:
$ docker run -d -P --name web -v /src/webapp:/opt/webapp:ro lxc/webapp python app.py
3. 挂载本地主机文件作为数据卷(不推荐)
$ docker run --rm -it -v ~/.bash_hostory:/.bash_history ubuntu /bin/bash
这样可以记录在容器中输入过的命令历史了

数据卷容器
4. 创建数据容器并在其中创建一个数据卷挂载到 /dbdata
$ docker run -it -v /dbdata --name dbdata ubuntu
5. 使用--volumes-from挂载 数据卷容器中的数据卷
$ docker run -it --volumes-from dbdata --name db1 ubuntu
$ docker run -it --volumes-from dbdata --name db2 ubuntu
此时,db1和db2都挂载了同一个数据卷到相同的/dbdata目录。三个容器任何一方在该目录下写入,其他容器都可见。
也可以从已经挂载了容器卷的容器来挂载数据卷。
$ docker run -d --name db3 --volumes-from db1 ubuntu
使用--volumes-from 参数所挂载数据卷的容器自身并不需要保持运行状态。
注意:删除挂载了数据卷的容器并不能删除数据卷,可以再删除最后一个还挂载这数据卷的容器时使用命令docker rm -v 容器ID
利用数据卷容器迁移数据

6. 备份
$ docker run --volumes-from dbdata -v $(pwd) :/backup --name worker ubuntu tar cvf /backup/backup.tar /dbdata
这条命令的意思是利用ubuntu镜像创建一个容器并命名worker,并且从dbdata容器挂载数据卷,-v 把容器的/backup目录挂载到宿主机当前目录,在容器运行后把 /backup下的backup.tar 解压到/dbdata目录下
7. 恢复
将数据恢复到另一个容器
$ docker run -v $(pwd):/backup ubuntu tar xvf /backup/backup.tar

猜你喜欢

转载自blog.51cto.com/13670314/2327906
今日推荐