Docker数据管理

docker使用过程,需经常更改容器内数据,并且需要备份及共享数据,这是需要对容器数据进行管理,管理方式主要分为数据卷及数据卷容器。

一、数据卷(一个可供容器使用的特殊目录,绕过文件系统)

1、数据卷可以在容器之间共享和重复使用 2、对数据卷的修改会立即生效 3、对数据卷的更新,不影响镜像 4、卷会一直存在,直到没有容器使用 5、数据集的使用方式,类似于mount操作 6、选择-v还是--mount参数 Docker 新用户应该选择--mount参数,经验丰富的 Docker 使用者对-v或者-volume已经很熟悉了,但是推荐使用--mount参数。(我用的是-v) 示例如下:

1)创建一个数据卷 docker volume create (卷名) docker volume create my-vol

2)查看所有数据卷 docker volume ls

3)查看指定数据卷信息 docker volume inspect (卷名) docker volume inspect my-vol

二、挂载主机目录并启动一个挂载数据卷的容器

在用docker run 命令的时候,使用--mount标记来将数据卷挂载到容器里。在一次docker run中可以挂载多个数据卷 。 示例如下: 1、创建一个名为web的容器,并加载一个数据卷到容器的/html/目录。 docker run -it -p 192.168.152.159:6000:80 --name web -v /html/:/my-vol/ docker.io/nginx /bin/sh

2、在挂载目录/html/下随便创建文件或者目录 touch /html/666

3、切换到web容器查看/my-vol/目录 docker attach ac 注:以上加载数据卷完成!

4、查看数据卷的具体信息 docker inspect (容器名) docker inspect web

5、删除数据卷
数据卷是被设计用来持久化数据的,它的生命周期独立于容器,Docker不会在容器被删除后自动删除数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷。如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用docker rm -v这个命令,也可以使用docker volume rm (卷名) docker volume rm my-vol 注:当无主容器的数据卷可能会占据很多空间,切记定期清除,释放空间。

三、通过数据卷容器迁移数据

1、创建名字为nginx_8容器,将web中的数据卷挂载,再将当前真机目录挂载到容器的/backup/目录当nginx_8容器运行后,归档web容器数据卷/my-vol目录到nginx_8容器的/backup目录(而/backup目录又由linux主机当前目录挂载,因此归档出的文档归档到linux主机当前目录下) docker run --volumes-from (容器名) -v (真机当前目录):(容器内备份目录) --name (新的容器名)nginx:latest tar cvf /backup/backup.tar /(容器内存在的目录)

2、查看当前主机当前目录情况 ls

3、进入容器并删除挂载目录下的文件 rm -rf my-vol/*

4、恢复误删除容器里的文件 docker run --volumes-from web -v $(pwd):/backup nginx:latest tar xvf /backup/backup.tar

5、查看容器里已删除文件 ls my-vol 注:以上简单介绍了docker数据管理使用方法!