zoukankan      html  css  js  c++  java
  • (五)、Docker 容器数据卷

    1、什么是数据卷
    • 将运用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的
    • 容器之间希望有可能共享数据

    Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来,
    那么当容器删除后,数据自然也就没有了。

    为了能保存数据在docker中我们使用卷。

    卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性:

    卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷

    特点:
    1:数据卷可在容器之间共享或重用数据
    2:卷中的更改可以直接生效
    3:数据卷中的更改不会包含在镜像的更新中
    4:数据卷的生命周期一直持续到没有容器使用它为止

    2、容器添加数据卷
    1. 命令方式

    docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名

    #代表将宿主机/usr/local/src中数据挂载到容器中home目录
    docker run -it -v /usr/local/src/:/home cento
    #home后:ro代表只读
    docker run -it -v /usr/local/src/:/home:ro cento
    
    

    可以通过命令查看数据卷是否挂载成功:docker inspect 容器ID

    1. Dockerfile方式

    可在Dockerfile中使用VOLUME指令来给镜像添加一个或多个数据卷

    FROM centos
    VOLUME ["/test1","/test2"]
    CMD echo "hello world"
    CMD /bin/bash
    

    说明:

    出于可移植和分享的考虑,用-v 主机目录:容器目录这种方法不能够直接在Dockerfile中实现。
    由于宿主机目录是依赖于特定宿主机的,并不能够保证在所有的宿主机上都存在这样的特定目录。

    构建Dockerfile文件

    # -f 指定Dockerfile路径 -t 新镜像名称
    docker build -f /usr/local/src/Dockerfile -t centos-redis-01 .
    

    构建成功后可以通过docker images查看镜像。

    可以通过命令查看数据卷是否挂载成功并且可以查看具体对应test1,test2的宿主机目录:docker inspect 容器ID

    3、数据卷容器

    命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器。

    docker run -it --name centos-redis-02-vm --volumes-from centos-redis-01-vm  centos-redis-01
    #代表centos-redis-02-vm共享centos-redis-01-vm 数据卷
    
  • 相关阅读:
    PythonStudy——数据类型总结 Data type summary
    PythonStudy——可变与不可变 Variable and immutable
    PythonStudy——列表操作 List operatio
    PythonStudy——列表的常用操作 List of common operations
    PythonStudy——列表类型 List type
    PythonStudy——字符串扩展方法 String extension method
    PythonStudy——字符串重要方法 String important method
    AWT,Swing,RCP 开发
    JQuery插件机制
    最新知识网站
  • 原文地址:https://www.cnblogs.com/SimpleWu/p/13385427.html
Copyright © 2011-2022 走看看