• docker19.03使用数据卷


    一,查看当前的docker版本

    [root@localhost data]# docker --version
    Docker version 19.03.8, build afacb8b

    说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

             对应的源码可以访问这里获取: https://github.com/liuhongdi/

     说明:作者:刘宏缔 邮箱: 371125307@qq.com

    二,查看当前的数据卷

    使用 docker volume ls 命令

    [root@localhost data]# docker volume ls
    DRIVER              VOLUME NAME

    三,创建一个数据卷,名字叫 zk-vol

    使用 docker volume create 命令

    [root@localhost data]# docker volume create zk-vol
    zk-vol
    
    [root@localhost data]# docker volume ls
    DRIVER              VOLUME NAME
    local               zk-vol

    四,查看数据卷的详细信息

    使用 docker volume inspect 命令

    [root@localhost data]# docker volume inspect zk-vol
    [
        {
            "CreatedAt": "2020-03-18T15:46:47+08:00",
            "Driver": "local",
            "Labels": {},
            "Mountpoint": "/data/docker/volumes/zk-vol/_data",
            "Name": "zk-vol",
            "Options": {},
            "Scope": "local"
        }
    ]

    说明:注意Mountpoint所标识的目录是volume在宿主机上的目录

    五,运行一个容器,挂载我们所创建的数据卷:

    1,我们在/data/docker/volumes/zk-vol/_data目录下创建一个文件a.txt,

    内容是aaa

    [root@localhost data]# cd /data/docker/volumes/zk-vol/_data
    [root@localhost _data]# vi a.txt

    2,启动后查看数据卷

    [root@localhost _data]# docker run --name testvol --privileged --hostname=testvol -itd --mount src=zk-vol,dst=/data/zk-vol centos /usr/sbin/init
    6f2272f22ac708276bba0a26aeb0b3e04dd9dba308d1c07b9527fa28da1ef756
    [root@localhost _data]# docker exec -it testvol /bin/bash
    [root@testvol /]# cd /data/zk-vol/
    [root@testvol zk-vol]# more a.txt 
    aaa

    说明:也可以使用 -v参数进行挂载:

    [root@localhost _data]# docker run --name testvol --privileged --hostname=testvol -itd -v zk-vol:/data/zk-vol centos /usr/sbin/init

    六,删除数据卷:

    使用 docker volume rm 命令

    [root@localhost _data]# docker volume ls
    DRIVER              VOLUME NAME
    local               logs
    local               logs2
    local               zk-vol
    [root@localhost _data]# docker volume rm logs
    logs
    [root@localhost _data]# docker volume rm logs2
    logs2
    [root@localhost _data]# docker volume ls
    DRIVER              VOLUME NAME
    local               zk-vol

    七,容器数据卷:新运行一个容器,挂载三个目录或文件:

    [root@localhost docker]# docker run -itd --name dbvolume --hostname dbvolume -v /etc/localtime:/etc/localtime -v /data/nfs:/data/nfs -v /data/rsync:/data/rsync centos:latest
    56efd12b38ab3d5b65606782b8800a027b4aad594045f1500a3b3d440ce4d756

    命名为: dbvolume

    八,在宿主机中查看与容器数据卷dbvolume挂载相关的信息:

    [root@localhost docker]# docker inspect dbvolume

    其中:

    HostConfig下面的Binds保存有挂载信息

    "HostConfig": {
                "Binds": [
                    "/etc/localtime:/etc/localtime",
                    "/data/nfs:/data/nfs",
                    "/data/rsync:/data/rsync"
                ],

    Mounts下面也有这三个挂载目录的信息

     "Mounts": [
                {
                    "Type": "bind",
                    "Source": "/data/rsync",
                    "Destination": "/data/rsync",
                    "Mode": "",
                    "RW": true,
                    "Propagation": "rprivate"
                },
                {
                    "Type": "bind",
                    "Source": "/etc/localtime",
                    "Destination": "/etc/localtime",
                    "Mode": "",
                    "RW": true,
                    "Propagation": "rprivate"
                },
                {
                    "Type": "bind",
                    "Source": "/data/nfs",
                    "Destination": "/data/nfs",
                    "Mode": "",
                    "RW": true,
                    "Propagation": "rprivate"
                }
            ],

    九,新启动另一个容器usevolume,并挂载容器数据卷:

    [root@localhost docker]# docker run --hostname usevolume --name usevolume --volumes-from dbvolume -itd --privileged centos:latest /usr/sbin/init
    57926ab056fcbcb8b679bf167bcf5fd9368a4f958445ffb84c3bccc474013441

    说明:--volumes-from dbvolume

    --volumes-from 用来加载一个容器数据卷

    十,查看新容器中的挂载信息:

    [root@localhost docker]# docker inspect usevolume
    "HostConfig": {
                "Binds": null,

    Binds为空

    "Mounts": [
                {
                    "Type": "bind",
                    "Source": "/etc/localtime",
                    "Destination": "/etc/localtime",
                    "Mode": "",
                    "RW": true,
                    "Propagation": "rprivate"
                },
                {
                    "Type": "bind",
                    "Source": "/data/nfs",
                    "Destination": "/data/nfs",
                    "Mode": "",
                    "RW": true,
                    "Propagation": "rprivate"
                },
                {
                    "Type": "bind",
                    "Source": "/data/rsync",
                    "Destination": "/data/rsync",
                    "Mode": "",
                    "RW": true,
                    "Propagation": "rprivate"
                }
            ],

    但Mounts下各个目录已挂载

    十一,测试在dbvolume和usevolume分别写入:

    1,dbvolume中

    [root@dbvolume nfs]# cd /data/nfs/test
    [root@dbvolume test]# vi a.txt
    [root@dbvolume test]# more a.txt
    aa

    2,usevolume中

    [root@usevolume nfs]# cd /data/nfs/test
    [root@usevolume test]# vi b.txt
    [root@usevolume test]# more b.txt 
    bb
    [root@usevolume test]# more a.txt 
    aa

    3,回到dbvolume中

    [root@dbvolume test]# more b.txt 
    bb

    可见从两个容器中写入都不存在问题

    十二,如果数据卷容器被停止,使用它的容器还能否正常工作?

    1,停止dbvolume

    [root@localhost docker]# docker stop dbvolume
    dbvolume
    [root@localhost docker]# docker ps -a | grep dbvolume
    56efd12b38ab        centos:latest       "/bin/bash"         26 minutes ago      Exited (0) 52 seconds ago                       dbvolume

    2,到usevolume中测试读写

    [root@usevolume nfs]# cd /data/nfs/test
    [root@usevolume test]# vi c.txt
    [root@usevolume test]# more c.txt 
    cc

    3,从宿主机中查看c.txt是否成功写入:

    [root@localhost docker]# cd /data/nfs/test/
    [root@localhost test]# more c.txt 
    cc

    4,结论:数据卷容器被停止,使用它的容器依然可以正常工作

  • 相关阅读:
    http headers总结
    golang跨域配置
    Kafka中topic的Partition,Kafka为什么这么快,Consumer的负载均衡及consumerGroup的概念
    kafka partition(分区)与 group
    RocketMQ从部署到应用(Golang)
    Codeforces Round #706 (Div. 2)
    关于平衡树
    具体数学 第三章 整值函数
    FFT&NTT&多项式全家桶
    省选测试15
  • 原文地址:https://www.cnblogs.com/architectforest/p/12540196.html
Copyright © 2020-2023  润新知