一,查看当前的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之二日志挖掘log miner

    日志挖掘 log miner 6.1 log miner的作用: 数据库恢复中有时会需要对Redo log进行分析, 要会使用log miner,以便确定要恢复的时间点或SCN 6.2 有两种日志挖掘 ...

  2. 本机ping不通虚拟机,但虚拟机可以ping通本机时怎么解决

    在各自网络都连接的情况下,本机ping不通虚拟机,但虚拟机可以ping通本机时解决方案: 1.linux虚拟机中连接方式选择NAT模式 2.本地启动VMnet8,然后选择VMnet8的属性,手动输入和 ...

  3. spring官网在线学习文档翻译

    Core Technologies (核心技术) Version 5.0.8.RELEASE 版本5.0.8RELEASE This part of the reference documentati ...

  4. Java一键部署包,Linux部署不用愁!!!

    前言 昨天一哥们的弟弟突然问我有没有部署过的Linux,公司连个运维都没有,服务器都要后端部署.... 你有没有相似的遭遇呢?公司规模小,后端即是运维,一份工资干两份活,哈哈~ 为了解决这老弟的困惑, ...

  5. Docker多主机管理(八)

    docker多主机管理 前面我们的实验环境中只有一个 docker host,所有的容器都是运行在这一个 host 上的.但在真正的环境中会有多个 host,容器在这些 host 中启动.运行.停止和 ...

  6. netty之handler write

    转载自:https://blog.csdn.net/FishSeeker/article/details/78447684 实验过,例如channle的handler里有很多个outhandler,在 ...

  7. 【Java并发编程】从CPU缓存模型到JMM来理解volatile关键字

    目录 并发编程三大特性 原子性 可见性 有序性 CPU缓存模型是什么 高速缓存为何出现? 缓存一致性问题 如何解决缓存不一致 JMM内存模型是什么 JMM的规定 Java对三大特性的保证 原子性 可见 ...

  8. Redis中set集合(无序)操作命令

    set集合(无序) set是一个无序的不重复元素的集合 增 sadd 往集合内部添加元素 127.0.0.1:6379> sadd set1 a b c d (integer) 4 127.0. ...

  9. Spring学习(一)初识Spring

    什么是Spring 定义:Spring 是一个轻量级的 DI / IoC 和 AOP 容器的开源框架,目的为了简化java开发. DI:注入 IOC:控制反转 AOP:面向切面编程 原理:利用了jav ...

  10. 安装Ubuntu虚拟机

    centos已经满足不了我了,这里就装了个虚拟机,等有钱了再单配台单系统的Linux主机. 一.下载Ubuntu的ISO文件 用国内的网易镜像站点 进去点个16.04.6,然后下个64位的.iso就好 ...