使用docker的时候,往往需要查看容器内的数据,或者将容器内的数据进行备份。
数据的管理方式主要有两种:

  • 数据卷
  • 数据卷容器

一、数据卷

数据卷主要是用来在容器之间进行共享和重用的。

1.挂载一个主机目录作为数据卷。

docker run -d -P --name web --privileged=true -v /docker/webapps:/opt/webapps centos

Docker 大数据 docker的数据管理_centos


参数解释:-P 保留所有容器需要暴露的端口(比如8080等等),后面会有-p

– name:给容器设置名字。-v:挂载数据卷。就是将容器的数据和本地的数据完成同步。:前面的路径是本地的路径,:后面的路径是容器内的路径。挂载数据卷的目的就是完成容器内的数据和本地的数据同步,只要容器内的数据有变化,本地立刻给备份了。

2.ro只读

docker run -ti -P --name web1 -v /docker/webapps:/opt/webapps:ro centos

加上:ro之后,容器内挂载的数据卷的数据就无法修改了。

二、数据卷容器

上面我们讨论的主机与容器之间的数据同步,那么容器与容器之间的数据同步怎么做到呢。最简单的当时是使用数据卷容器。数据卷容器也是一个容器,专门用这个容器来提供数据卷供其他容器挂载使用。
1.创建数据卷容器,使用-v创建数据卷dbdata目录,数据卷容器命名是db

docker run -d -v /dbdata --name db centos

Docker 大数据 docker的数据管理_docker_02


2.将数据卷容器挂载到两个容器中,使用–volumes-from来挂载db容器中的数据卷。说白了,就是使用db这个容器来作为单独一个容器完成对多个容器的数据的互联。

docker run -d --volumes-from db --name db1 centos
docker run -d --volumes-from db --name db2 centos

Docker 大数据 docker的数据管理_数据_03


注意:

  • 使⽤—volumes-from参数所挂载数据卷的容器⾃身并不需要保持在运⾏状态。
  • 如果删除了挂载的容器(db1,db2等),。如果要删除⼀个数据卷,必须在删除最后⼀个还挂载着它的容器时显示使⽤docker rm -v命令来指定同时删除关联的容器。