zoukankan      html  css  js  c++  java
  • Docker数据管理

    Docker 管理数据的方式有两种:
    数据卷
    数据卷容器

    1、数据卷

    数据卷是一个或多个容器专门指定绕过 Union File System 的目录,为持续性或共享数据提供一些有用的功能:
    数据卷可以在容器间共享和重用
    数据卷数据改变是直接修改的
    数据卷数据改变不会被包括在容器中
    数据卷是持续性的,直到没有容器使用它们

    数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此,使用数据卷后,容器可以随意删除、重新运行,数据却不会丢失。
    添加一个数据卷
    你可以使用 -v 选项添加一个数据卷,或者可以使用多次 -v 选项为一个 docker 容器运行挂载多个数据卷。
    -v 选项除了可以创建卷,也可以挂载当前主机的一个目录到容器中。

    docker run -d --name test -v /app/docker/webapps:/app/tomcat/webapps -p 8090:8080 tomcat:test #一个
    docker run -d --name tomcat-8090 -v /app/docker/webapps:/app/tomcat/webapps -v /app/docker/logs:/app/tomcat/logs -p 8090:8080 tomcat:test #多个
    

    如果挂载的目录不存在,就会创建。
    默认挂载卷是可读写的,可以在挂载时指定只读:

    docker run -d --name test -v /app/docker/webapps:/app/tomcat/webapps:ro -p 8090:8080 tomcat:test
    

    创建的数据卷可以通过 docker inspect 获取宿主机对应路径

    docker inspect tomcat-8090 |sed -n '/"Volumes": {/{:a;n;/}/!p;/}/!ba}'

    或者

    docker inspect --format="{{.Volumes}}" tomcat-8090
    

    2、数据卷容器
    数据卷容器,其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的。
    如果你有一些持久性的数据并且想在容器间共享,或者想用在非持久性的容器上,最好的方法是创建一个数据卷容器,然后从此容器上挂载数据。
    启动一个容器:

    docker run -d --name tomcat-8090 -v /app/docker/webapps:/app/tomcat/webapps -v /app/docker/logs:/app/tomcat/logs -p 8090:8080 tomcat:test
    [root@localhost docker]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    a6906e205ae8 tomcat:test "/bin/sh -c '/etc/in 26 minutes ago Up 26 minutes 0.0.0.0:8090->8080/tcp tomcat-8090

    在其他容器中使用 --volumes-from 来挂载 tomcat-8090 容器中的数据卷。

    docker run -d --name tomcat-8080 --volumes-from tomcat-8090 -p 8080:8080 tomcat:test

    注意:使用 --volumes-from 参数所挂载数据卷的容器自己并不需要保持在运行状态。

    验证:
    容器tomcat-8090:

    容器tomcat-8080:

    如果删除了挂载的容器(包括 tomcat-8090、tomcat-8080),数据卷并不会被自动删除。如果要删除一个数据卷,必须在删除最后一个还挂载着它的容器时使用 docker rm -v 命令来指定同时删除关联的容器。

    3、备份、恢复或迁移数据卷

    备份:

    docker run --rm --volumes-from tomcat-8090 -v /opt/backup:/backup centos tar cvf /backup/tomcat-webapps.tar /app/tomcat/webapps

    启动一个新的容器并且从 tomcat-8090 容器中挂载卷,然后挂载/opt/backup 目录到容器中为 /backup,并备份tomcat-8090 卷中的webapps目录的数据为 tomcat-webapps.tar ,备份目录在/opt/backup目录下,--rm 选项表示执行完成之后删除容器 。

    改变:
    echo 'ok' > /app/docker/webapps/ROOT/test/test.html
    

    恢复:

    docker run --rm --volumes-from tomcat-8080 -v /opt/backup:/backup centos tar xvf /backup/tomcat-webapps.tar
    

    删除 Volumes
    Volume 只有在下列情况下才能被删除:
    docker rm -v 删除容器时添加了 -v 选项
    docker run --rm 运行容器时添加了 --rm 选项

  • 相关阅读:
    20201022-1 每周例行报告
    2020高级软件工程“领跑衫”获奖感言
    20201015-3 每周例行报告
    20201008-1 每周例行报告
    竞拍作业
    20201207-总结-作业
    20201126-1每周例行报告
    20201120-1每周例行报告
    20201112 -1每周例行报告
    20201105-1例行报告
  • 原文地址:https://www.cnblogs.com/Eivll0m/p/7240767.html
Copyright © 2011-2022 走看看