您的位置:首页 > 运维架构 > Docker

Docker-容器数据管理

2018-02-25 21:23 393 查看
本文摘自书籍《Docker技术入门与实战》

用户在使用Docker过程中,往往需要查看容器内应用产生的数据,或者需要把容器内的数据进行备份,甚至多个容器之间进行数据的共享,这必然涉及容器的数据管理操作。容器内管理数据主要有两种方式:数据卷数据卷容器

数据卷

数据卷是一个可供容器使用的特殊目录,它绕过文件系统,可以提供很多有用的特性:

数据卷可以在容器之间共享和重用。

对数据卷的修改会立马生效。

对数据卷的更新不会影响镜像。

卷会一直存在,直到没有容器使用。

创建数据卷

在使用docker run命令时,使用-v标记可以在容器内创建一个数据卷。多次使用-v可以创建多个数据卷。

1. 容器内创建数据卷

首先拉取tomcat镜像(默认注册服务器:docker.io):

docker pull tomcat


拉取完成后查看:

docker images


启动并创建一个数据卷:

docker run -d -p 8080 --name tomcat -v /data tomcat
-d:容器保持运行
-p:指定监听端口
--name:容器名(这里是'tomcat')
-v:创建数据卷
/data:表示容器内目录(可任意指定,但要求为绝对路径),数据卷将挂载到这个目录下。
tomcat:表示镜像


2. 挂载宿主机目录作为数据卷

docker run -d -p 8080 --name tomcat -v /usr/local/volumn/tomcat:/data tomcat
/usr/local/volumn/tomcat:表示宿主机目录,此目录不存在会自动生成。
/data:表示容器目录
tomcat:镜像


上面的命令加载宿主机的/usr/local/volumn/tomcat到容器的/data目录,用例:进行测试,用户可以放置一些程序或数据到本地目录中,然后在容器内运行和使用。

docker挂载数据卷德默认权限是读写,可进行参数配置,例子:

docker run -d -p 8080 --name tomcat -v /usr/local/volumn/tomcat:/data:ro tomcat


上面的命令使得数据为只读(ro)

3. 挂载宿主机文件作为数据卷

根据上面一条创建很容易想到命令的样子:

docker run -d -p 8080 --name tomcat -v /usr/local/volumn/tomcat.log:/data.log tomcat


不推荐直接挂载文件到容器,而是挂载文件所在的目录到容器。

数据卷容器

如果需要在容器间共享一些持续更新的数据,最简单的方式是使用数据卷容器。数据卷容器其实就是一个普通的容器,专门用它提供数据卷供其他容器挂载。

首先创建一个容器且容器内创建数据卷,可以使用任意的镜像进行创建,无强制要求:

docker run -it -v /volumns --name volumns-container ubuntu
很显然,数据卷为/volumns,容器名为:volumns-container,镜像为:ubuntu


上面的命令并没有包含-d参数,意味着,数据卷德容器自身并不需要保持在运行状态度。

挂载数据卷到上面的容器目录:

--volumes-from volumns-container
将之前的命令中-v及其参数换成上面的样子即可。


利用数据卷容器迁移数据

可以利用数据卷容器对其中的数据卷进行备份、恢复,以及实现数据迁移。

备份

docker run --volumes-from volumn-container -v /usr/local/volumn:/data --name cp ubuntu tar cvf /data/backup.tar /volumns


分析:

首先利用Ubuntu镜像创建一个名为cp的容器,使用–volumes-from volumn-container让cp容器挂载volumn-container容器的数据卷(volumns),使用-v /usr/local/volumn:/data挂载本地目录(/usr/local/volumn)到cp容器的/data目录,容器启动后,使用tar cvf /data/backup.tar /volumns命令将/volumns下的内容备份为容器内的/data/backup.tar即宿主机下的/usr/local/volumn/backup.tar。

恢复

恢复数据到容器,操作如下:

首先创建一个带有数据卷的容器:

docker run -v /data --name vol ubuntu


创建一个新容器,挂载到上面的容器vol,并使用untar解压备份文件到所挂载的容器卷中即可:

docker run --volumes-from vol -v /usr/local/volumn:/data ubuntu tar xvf /data/backup.tar


上一篇:Docker核心-仓库

下一篇:Docker-网络基础配置
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Docker