一,查看当前的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,结论:数据卷容器被停止,使用它的容器依然可以正常工作

docker19.03使用数据卷的更多相关文章

  1. docker-5-容器数据卷

    1.是什么 一句话:有点类似我们Redis里面的rdb和aof文件   先来看看Docker的理念: *  将运用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的 ...

  2. Docker容器数据卷介绍和命令

    是什么 一句话:有点类似我们Redis里面的rdb和aof文件 先来看看Docker的理念: *  将运用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的 *   ...

  3. docker系列(四):数据卷

    1 引言 容器就相当于一个简易的操作系统,我们在上面部署我们的环境,不可避免地产生一些数据,但是,可能由于断电等等原因,容器退出了,那么之前容器中的数据就不符存在,则往往不是我们想要的,更多的,我们是 ...

  4. docker数据卷之持久化操作

    docker Docker三大核心组件:(运行起来的镜像就可以称作容器) Docker 镜像--Dcoker images:类比与类 Docker 仓库--Docker registeries: Do ...

  5. 5、docker容器数据卷: -v添加共享传递容器数据卷

    1.是什么 1.docker理念 先来看看Docker的理念:*  将运用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的*  容器之间希望有可能共享数据 2.保 ...

  6. Docker容器数据卷volumes-from

    定义4个终端: 终端host终端container dc01终端container dc02终端container dc03各个容器之间的关系: 1.启动一个父容器dc01启动一个父容器dc01,并在 ...

  7. Docker数据管理-数据卷 data volumes和数据卷容器data volumes containers的使用详解

    此文来源于:https://yq.aliyun.com/ziliao/43471 参考原文件之外,做了些修改. Volume数据卷是Docker的一个重要概念.数据卷是可供一个或多个容器使用的特殊目录 ...

  8. 1.docker介绍、命令、容器、镜像、数据卷、Dockerfile、常用软件安装、推送阿里云

    一.docker介绍 1.docker是什么 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置.作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各 ...

  9. 『现学现忘』Docker基础 — 29、Docker容器数据卷的应用

    目录 1.验证容器和宿主机之间数据共享 2.容器停止退出后,主机修改后数据是否同步 3.带只读权限的挂载数据卷 1.验证容器和宿主机之间数据共享 通过上面的操作,接下来我们演示一下通过数据卷的挂载,实 ...

随机推荐

  1. QEMU 虚拟机网卡探究

    前述 我们知道无论是VMware,Virtual Box还是HyperV 都支持 NAT/Bridge/Host-Only 三种上网方式.其中 NAT 是我最常用,最熟悉的. 需要说明的是,无论是NA ...

  2. 第18课 - make 中的路径搜索(下)

    第18课 - make 中的路径搜索(下) 1. 问题一 当 VPATH 和 vpath 同时出现,make 会如何处理? 工程项目的目录结构如下图所示,src1 和 src2 中都包含了 func. ...

  3. [记录点滴]授人以渔,从Tensorflow找不到dll扩展到如何排查问题

    [记录点滴]授人以渔,从Tensorflow找不到dll扩展到如何排查问题 目录 [记录点滴]授人以渔,从Tensorflow找不到dll扩展到如何排查问题 0x00 摘要 0x01 引言 0x02 ...

  4. Nginx 配置 HTTPS 完整过程(阿里云申请免费版一年ssl证书)

    1. nginx 的 ssl 模块安装 查看 nginx 是否安装 http_ssl_module 模块. $ /usr/local/nginx/sbin/nginx -V 如果出现 configur ...

  5. SpringValid优雅校验入参

    一.简介 后台业务入口类Controller,对于入参的合法性校验,可以简单粗暴的写出一堆的 if 判断,如下: @RestController @RequestMapping("user& ...

  6. Java基础一篇过(四)List这篇就够了

    文章更新时间:2020/08/03 一.List介绍 list是Java的一个接口,继承了Collection,常用到的有3个子类实现: ArrayList 底层数据结构是数组.线程不安全 Linke ...

  7. kali学习wiki

    https://github.com/Keybird0/Kali-learning-notes/wiki

  8. HTTP协议学习之Request学习

    在开始前,我们首先对HTTP协议做个简单的了解 HTTP协议(Hyper Text Transfer Protocol) 超文本传输协议 名词非常的高大上,如果学过计算机网络这门课(再如果还有一点印象 ...

  9. Linux等待队列(Wait Queue)

    1. Linux等待队列概述 Linux内核的等待队列(Wait Queue)是重要的数据结构,与进程调度机制紧密相关联,可以用来同步对系统资源的访问.异步事件通知.跨进程通信等.在Linux中,等待 ...

  10. Android控件Gridivew列数行间距设定

    常用属性 列数 android:numColumns="3" 行间距 android:verticalSpacing="8dp"