09-15 16:49 docker 学习 Docker 数据管理 在生产环境中使用Docker,往往需要对数据进行持久化,或者在多个容器之间进行数据共享,涉及到的容器数据管理方式只有有两种数据卷和数据卷容器。 #### 数据卷特性 数据间可以在容器之间共享和重用。 对数据卷内数据的修改会立马生效。 对数据卷的更新不会影响镜像。 数据卷会一直存在,知道没有容器使用。 ###### 创建数据卷 使用 `docker volume create -d local test` 命令将会在/var/lib/docker/volume 路径下创建 test 数据卷。 #### 数据卷容器 当需要在多个容器之间共享一些持续更新的数据是可以使用`docker run it -v /dbdata --name dbdata [image]`创建一个数据卷容器dbdata,并在其中创建一个数据卷挂载到/dbdata。然后可以再其他容器中使用 --volumes-from 来挂载dbdata容器中的数据卷。如`docker run -it --volumes-from dbdata --name db1 [image]`此时容器db1与刚才的创建的dbdata容器都挂在同一个数据卷/dbdata目录,两个容器任何一方在该目录下的写入,其他容器都可以看到。 #### 利用数据卷容器迁移数据 ###### 备份 使用`docker run --volumes-from dbdata -v $(pwd):/backup --name worker [image] tar cvf /backup/backup.tar /dbdata`命令 首先用 镜像创建了一个容器worker,使用 --volumes-from dbdata参数来让worker容器挂载dbdata容器的数据卷;使用-v $(pwd):backup参数来挂载本地的当前目录到worker容器的/backup目录。worker容器启动后,使用tar cvf /backup/backup.tar /dbdata 命令将 /dbdata 下内容备份为容器内的 /backup/backup.tar,即宿主主机当前目录下的backup.tar. ###### 恢复 首先创建一个带有数据卷的容器dbdata2 `docker run -v -it /dbdata --name dbdata2 [image]`然后创建另一个新的容器,挂载dbdata2的容器,并使用untar解压备份文件到所挂载的容器卷中:`docker run --volumes-from dbdata2 -v $(pwd):/backup busybos tar xvf /backup/backup.tar`