一,查看当前的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. oracle之二控制文件

    控制文件 3.1 控制文件的功能和特点:       1)定义数据库当前物理状态,不断在往controlfile写入[SCN等]       2)维护数据的一致性       3)是一个二进制文件   ...

  2. 自定义 NSLog以便发版和调试

    问题 开发中用了大量的 NSLog,但是发布时想取消这些 NSLog 开发中是否经常用过 NSLog(@"%s", __FUNCTION__); 解决问题 新建 ExtendNSL ...

  3. Docker实战(3):Tomcat部署

    运行环境:centos7,Docker version 1.13.1,docker tomcat version 8.5.50 创建文件(为映射文件做准备,非固定) mkdir -p /tomcat/ ...

  4. Docker端口映射及创建镜像演示(二)

    Docker暴露容器方法 第一种:将容器中的一个端口映射成宿主机中的一个随机端口 第二种:将容器中的一个端口映射成宿主机中的一个端口 第三种:将容器中的一个端口映射成宿主机中的一个特定网卡上的随机端口 ...

  5. bootsrap 样式笔记

    颜色 --blue: #007bff; --indigo: #6610f2; --purple: #6f42c1; --pink: #e83e8c; --red: #dc3545; --orange: ...

  6. hystrix源码小贴士之之hystrix-metrics-event-stream

    hystrix-metrics-event-stream主要提供了一些servlet,可以让用户通过http请求获取metrics信息. HystrixSampleSseServlet 继承了Http ...

  7. RabbitMQ Server安装及显示管理界面Installing on Windows

    接上一篇文章,继续讲解 文件很小, 1.下载路径:http://www.rabbitmq.com/download.html 2.运行rabbitmq-server-3.6.5.exe,选择要安装的目 ...

  8. 01 android ndk入门实例之android.mk编译

    前言 1 环境 android studio2.3 , window系统 2 ndk https://dl.google.com/android/repository/android-ndk-r16- ...

  9. Redis5设计与源码分析读后感(四)压缩列表

    一.引言 上一节我们总结了跳跃表的知识,我们知道了有序数组可以用跳跃表实现,也可以用压缩列表来实现,这一篇文章我们来总结一下压缩列表相关的知识. 二.压缩列表简介 定义:压缩列表 ziplist 本质 ...

  10. MFC DLL中如何响应PreTranslateMessage消息

    最近项目中使用到MFC,由于工程是DLL的,在使用ToolTip时碰到非模态对话框无法显示的问题.查了一番资料,发现原因是由于:虽然MFC Regular DLL派生了CWinApp类,并有一个the ...