zoukankan      html  css  js  c++  java
  • Docker容器数据卷

    1.容器数据卷是什么

    实现容器数据持久化的一种方式。

    2.容器数据卷的特点

    ①可以在容器之间、容器与宿主机之间共享或重用数据

    ②数据卷中的更改可以直接生效

    ③数据卷的更改不会包含在镜像的更新中

    ④数据卷的生命周期一直持续到没有容器使用它为止

    3.自动共享

    我们可以使用docker cp命令在主机和容器间相互拷贝数据,相对比较麻烦,当设置好容器数据卷后,不管是主机还是容器,当数据卷目录下有变动时,其他有映射关系的目录会自动同步。

    4.添加方式

    4.1 命令添加

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

    # docker run -itd -v /root/pmVolume:/containerVolume ubuntu /bin/bash
    执行完该命令后,会自动在宿主机/root目录下生成pmVolume目录,在生成的容器中生成/containerVolume目录
    并且在这两个目录下有任何变化时,另一方目录会自动变化。(容器停止时也会同步)

    查看底层信息

    # docker inspect 80dd327ca6f4
    "Mounts": [
                {
                    "Type": "bind",
                    "Source": "/root/pmVolume",
                    "Destination": "/containerVolume",
                    "Mode": "",
                    "RW": true,
                    "Propagation": "rprivate"
                }
            ]

       创建只读容器数据卷(容器中只读)

    # docker run -itd -v /root/pmVolume:/containerVolume:ro ubuntu /bin/bash

    4.2 Dockerfile添加

     因为上面使用-v是宿主机到容器的数据卷绑定,这个对宿主机有依赖,不适合容器的移植与分享,所以dockerfile方式适用于容器之间的数据卷。

    mydockerfile内容:

    FROM ubuntu
    VOLUME ["/volume1","/volume2"]
    CMD echo "Data Volume created successfully!"
    CMD /bin/bash

    通过dockerfile构建镜像

    # docker build -f mydockerfile -t pm/ubuntu ./
    Sending build context to Docker daemon  2.048kB
    Step 1/4 : FROM ubuntu
     ---> f643c72bc252
    Step 2/4 : VOLUME ["/volume1","/volume2"]
     ---> Running in 4f677de96b04
    Removing intermediate container 4f677de96b04
     ---> 9fc884b7767a
    Step 3/4 : CMD echo "Data Volume created successfully!"
     ---> Running in 1dd72128a5da
    Removing intermediate container 1dd72128a5da
     ---> e278ba450d4e
    Step 4/4 : CMD /bin/bash
     ---> Running in d4c7640a26eb
    Removing intermediate container d4c7640a26eb
     ---> c92c94406166
    Successfully built c92c94406166
    Successfully tagged pm/ubuntu:latest

    使用上面镜像创建的容器中会自动生成目录/volume1和/volume2,通过docker inspect可以查看对应的宿主机的目录,如/var/lib/docker/volumes/30f3aaaf92a50f6a240efc6d204d6d33bca1cf6503c28d59f2bbb84d50062e48/_data

     5.数据卷容器

    从一个带有数据卷的容器,生成一个新的容器,新生成的容器也会创建数据卷目录,并跟其他容器同步。

    # docker run -it --volumes-from c3ff969b7c07 ubuntu /bin/bash

    注:当有多个容器都是通过这个方法创建的时候,只要还有一个容器存在,这个数据卷都是存在的。

  • 相关阅读:
    在qt中用tcp传输xml消息
    Response.Redirect 打开新窗体的两种方法
    div:给div加滚动栏 div的滚动栏设置
    高速排序算法
    海量数据处理面试题集锦
    VB中DateDiff 函数解释
    FusionCharts简单教程(一)---建立第一个FusionCharts图形
    mysql 加入列,改动列,删除列。
    Lucene教程具体解释
    Windows7下的免费虚拟机(微软官方虚拟机)
  • 原文地址:https://www.cnblogs.com/1016391912pm/p/14601850.html
Copyright © 2011-2022 走看看