Docker 四、Docker 数据管理

机械师 · 2023年07月11日 · 3077 次阅读

四、Docker 数据管理

使用 docker 部署程序,一旦 docker 容器关闭或重启,程序产生的数据也会销毁。因此在使用 docker 时,就需要对 docker 的数据进行持久化。方法主要有如下两种:

  • 数据卷: 将容器内的数据直接映射到本地主机中;
  • 数据卷容器: 使用特定的容器维护维护数据卷;

一、数据卷

数据卷,是一个可供容器使用的特殊目录,他将主机目录直接挂载仅容器中,将容器中的数据存储到本地。

数据卷命令 docker volume

  • 创建数据卷:docker volume create
    例如:docker volume create mydata,此命令将在/var/lib/docker/volumes 目录中创建一个卷

  • 查看数据卷信息:docker volume inspect
    例如:docker volume inspect mydata 命令,查看数据卷详细信息,参见上图;

  • 列出所有数据卷:docker volume ls

  • 清理无用数据卷:docker volume prune

  • 删除数据卷:docker volume rm
    例如:docker volume rm mydata

  • 绑定数据卷
    除了使用 docker volume 命令创建和管理数据卷,还可以在使用 docker run 命令创建启动容器时,将本地主机的任意目录挂载到容器内作为数据卷。
    方法一:mount(推荐)
    例如:docker run -d --mount type=bind,src=$(pwd)/myjks,target=/var/jenkins_home jenkins/jenkins:2.366 ,src 指定本地主机目录,target 指定容器内目录,$(pwd) 指本地的当前目录。

    方法二:-v(旧版)
    docker run -d -v $(pwd)/myjksv:/var/jenkins_home jenkins/jenkins:2.366 ,-v 参数后面,冒号前是本地主机目录,冒号后是指定容器内目录。

二、数据卷容器

如果需要在容器之间共享数据,那么最简单的方式就是数据卷容器,数据卷容器专门提供数据卷给其他容器挂载。

  • 创建数据卷容器 docker run -it -v /dbdata --name dbdata centos 创建一个数据卷容器,并在其中创建一个数据卷挂载到/dbdata 目录下;
  • 使用--volumes-from 命令,其他容器挂载数据卷
    docker run -it --volumes-from dbdata --name db1 centos
    docker run -it --volumes-from dbdata --name db2 centos
    创建 db1、db2 两个容器,并将两个容器分别挂载 dbdata 容器中的数据卷

  • 验证数据共享
    在 db1 容器内的 dbdata 目录下,创建一个新的目录/文件,在 db2 和 dbdata 容器内的 dbdata 目录,查看是否有 db1 容器创建的目录/文件。


三、备份与恢复

备份

docker run --volumes-from dbdata -v $(pwd)/backup:/backup --name copydata centos tar cvf /backup/copydata.tar /dbdata
上面的命令创建了 copydata 的容器,并挂挂载 dbdata 的数据卷,这样就可以访问 dbdata 的数据;-v 参数,将本地主机的 backup 挂载到 copydata 容器的/backup 目录;接着,使用 tar 命令将/dbdata 目录打包;经过以上操作,本地主机就有了该备份数据。

恢复

  • 创建一个数据卷容器

docker run -v /dbdata --name newdbdata centos

  • 创建容器,并挂在数据卷,恢复数据

docker run --volumes-from newdbdata -v $(pwd)/backup:/backup --name recovery centos tar xvf /backup/copydata.tar
创建 recovery 容器,并挂载 newdbdata 容器的数据卷 dbdata;-v 参数,将本地主机的备份目录挂载到 recovery 容器 back 目录;接着,使用 tar 命令,解压缩备份包,恢复数据。

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册