0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是数据卷与数据卷容器

汽车电子技术 来源:码农与软件时代 作者:码农与软件时代 2023-02-20 15:44 次阅读

容器可以承载微服务,也可以承载数据库,微服务的配置文件,数据库的数据文件,都需要持久化,也就是即使容器销毁了,这些数据也需要存在。

一方面可以釆用手工方式用命令行拷贝,在容器很多的情况下,是不可取的。另一方面可以自动保存到宿主机或者远程存储上。

容器中将用于存储的文件目录称为卷(Volume),可见容器的存储便是对目录的操作。

可以直接将容器目录映射到主机目录,称为数据卷;也可以构建专门挂载数据卷的容器,称为数据卷容器。

1. docker cp命令

首先启动名称为dockervolumtest1的ubuntu环境,并以/bin/bash方式进入到容器。

root@linux:/home# docker run -it --name="dockervolumtest1" ubuntu /bin/bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
125a6e411906: Pull complete 
Digest: sha256:26c68657ccce2cb0a31b330cb0be2b5e108d467f641c62e13ab40cbec258c68d
Status: Downloaded newer image for ubuntu:latest
root@51d152e09898:/# 进入到容器

再新建dockerdata1.log作为测试文件。

root@51d152e09898:/# ls
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@51d152e09898:/# cd tmp
root@51d152e09898:/tmp# ls
root@51d152e09898:/tmp# touch dockerdata1.log
root@51d152e09898:/tmp# echo this is docker data test > dockerdata1.log 
root@51d152e09898:/tmp# cat dockerdata1.log 
this is docker data test
root@51d152e09898:/tmp#

使用docker cp命令在主机和容器进行数据拷贝。

命令格式:

docker cp 容器ID:/目录 主机目录
root@linux:/# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
51d152e09898   ubuntu    "/bin/bash"   4 minutes ago   Up 4 minutes             dockervolumtest1
root@linux:/# docker cp 51d152e09898:/tmp /
root@linux:/# cd tmp
root@linux:/tmp# ls
dockerdata1.log
root@linux:/tmp# cat dockerdata1.log 
this is docker data test
root@linux:/tmp#

2. 数据卷

使用docker run命令,并指定-v选项,便可在启动容器的时挂载数据卷;

命令格式1:

docker run -v /宿主机路径:容器内路径 镜像名
# 如指定的目录不存在,系统会自动创建
root@linux:/home# docker run -it --name="volummnttest1" -v /tmp/hostdir:/tmp/dockerdir ubuntu /bin/bash 
root@ae1b5eda679d:/# ls
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
# 新建测试文件volum.log
root@ae1b5eda679d:/# cd /tmp/dockerdir/
root@ae1b5eda679d:/tmp/dockerdir# ls
root@ae1b5eda679d:/tmp/dockerdir# touch volum.log
root@ae1b5eda679d:/tmp/dockerdir# echo this is a volum test > volum.log 
root@ae1b5eda679d:/tmp/dockerdir#

新建命令窗口,查看Host宿主机的文件信息

root@linux:/tmp/hostdir# ll
total 12
drwxr-xr-x  2 root root 4096 May 12 17:12 ./
drwxrwxrwt 16 root root 4096 May 12 17:11 ../
-rw-r--r--  1 root root   21 May 12 17:13 volum.log
root@linux:/tmp/hostdir# cat volum.log 
this is a volum test
root@linux:/tmp/hostdir#

命令格式2:docker run -v 容器内路径 镜像名

# 不指定主机目录,系统会默认存储在/var/lib/docker/volumes/容器ID目录
root@linux:/tmp/hostdir# docker run -it --name="volummnttest2" -v /tmp/dockerdir2 ubuntu /bin/bash
root@cf7f42544b8f:/# ls
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@cf7f42544b8f:/# cd /tmp/
root@cf7f42544b8f:/tmp# ls
dockerdir2
root@cf7f42544b8f:/tmp#

新建命令窗口,查看volum2.log的相关信息:

root@linux:/# cd /var/lib/docker/
root@linux:/var/lib/docker# ls
buildkit  containers  image  network  overlay2  plugins  runtimes  swarm  tmp  trust  volumes
root@linux:/var/lib/docker# cd volumes/
root@linux:/var/lib/docker/volumes# ls
9c8c17797ea4efdee595d1eea56ea39906b4879fd150a17e5312dc5c6c62851b  backingFsBlockDev  metadata.db
root@linux:/var/lib/docker/volumes# cd 9c8c17797ea4efdee595d1eea56ea39906b4879fd150a17e5312dc5c6c62851b/
root@linux:/var/lib/docker/volumes/9c8c17797ea4efdee595d1eea56ea39906b4879fd150a17e5312dc5c6c62851b# ls
_data
root@linux:/var/lib/docker/volumes/9c8c17797ea4efdee595d1eea56ea39906b4879fd150a17e5312dc5c6c62851b# cd _data/
root@linux:/var/lib/docker/volumes/9c8c17797ea4efdee595d1eea56ea39906b4879fd150a17e5312dc5c6c62851b/_data# ls
volum2.log
root@linux:/var/lib/docker/volumes/9c8c17797ea4efdee595d1eea56ea39906b4879fd150a17e5312dc5c6c62851b/_data# cat volum2.log 
this is for volum2 test
root@linux:/var/lib/docker/volumes/9c8c17797ea4efdee595d1eea56ea39906b4879fd150a17e5312dc5c6c62851b/_data#

也可通过docker inspect 容器ID,查看详情

3. 数据卷容器

首先启动容器volumedockertest

root@linux:/# docker run -it --name="volumedockertest" -v volumebase:/tmp/volumbasedata ubuntu /bin/bash
root@2933ebe42b98:/# ls
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@2933ebe42b98:/# cd tmp
root@2933ebe42b98:/tmp# ll
total 12
drwxrwxrwt 1 root root 4096 May 12 09:50 ./
drwxr-xr-x 1 root root 4096 May 12 09:50 ../
drwxr-xr-x 2 root root 4096 May 12 09:50 volumbasedata/

再启动容器volumedockertest1,使用--volumes-from参数继承的volumedockertest数据卷。

root@linux:/# docker run -it --name="volumedockertest1" --volumes-from volumedockertest ubuntu /bin/bash
root@9ee901a1d422:/# ls

新建测试文件:

root@9ee901a1d422:/tmp/volumbasedata# echo this is test add data > basedata.log 
root@9ee901a1d422:/tmp/volumbasedata#

宿主机查看文件

root@linux:~# cat /var/lib/docker/volumes/volumebase/_data/basedata.log 
this is test add data
root@linux:~#
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据库
    +关注

    关注

    7

    文章

    3591

    浏览量

    63375
  • 容器
    +关注

    关注

    0

    文章

    481

    浏览量

    21883
  • 微服务
    +关注

    关注

    0

    文章

    117

    浏览量

    7241
收藏 人收藏

    评论

    相关推荐

    8.Docker数据管理之数据容器

    前端Docker
    电子学习
    发布于 :2023年02月03日 12:24:58

    labview高手学习笔记(第二

    和采样速率33第7.2节 在项目中如何选择数据采集卡36第7.3节 如何准确的了解数据采集卡的技术信息37第7.4节 数据采集卡的自校准和校准(外部)40第7.5节 我的一点体会46第7.6节
    发表于 12-20 14:22

    第3 通用数字电路

    第3 通用数字电路
    发表于 08-05 21:43

    LabVIEW学习笔记 【第二

    之前在论坛上看见有人分享一本书——《LabVIEW学习笔记 》,觉得挺好,而且热度也很高。只不过第二的附件丢失了,我试着下载,也下载不了。现找来第二,与各位一起学习。同时对这本书的作者表示感谢!
    发表于 10-17 21:58

    TCPIP详解 1协议

    TCPIP详解 1协议
    发表于 09-28 12:45

    TCPIP详解 2实现

    TCPIP详解 2实现
    发表于 09-28 12:46

    tcp-ip三合集

    tcp-ip三合集,
    发表于 02-10 23:25

    linux的标如何修改

    如何修改磁盘名称,例如U盘挂载后的名称。在windows下图形界面修改标属性就OK,在linux下方法如下:
    发表于 07-12 08:30

    从零开始入门 K8s | 应用存储和持久化数据:核心知识

    pod 中多个容器想共享数据,可以借助 Pod Volumes 来解决;当多个 pod 想共享数据时,Pod Volumes 就很难去表达这种语义;场景四:如果要想对数据
    发表于 10-15 14:55

    从零开始入门 K8s | 应用存储和持久化数据:核心知识

    secret/configmap 用的形式挂载在容器中,让容器中的程序可以通过 POSIX 接口来访问配置数据;PV 与 PVC 就是今天要重点介绍的内容。Persistent V
    发表于 10-16 10:10

    深圳打孔机系统,CCD双头打孔提高生产效率

    技术中的打孔机在实际使用过程中具有很多的缺陷,例如:现有技术中公开的打孔机一般设置有一个打孔器,打孔器安装在能够垂直于带传送方向的移进机构上,通过传动机构将膜带传送至打孔位,
    发表于 05-08 10:17

    深圳对位系统,对点对色准确,提高设备印刷品质

    印刷机是特印设备中的一个种类,广泛应用于工业用品及塑胶、玻璃、金属片、陶瓷片、电子板等等。丝印原理是通过丝(网)印刷的技术,将特定图案印刷到既定材料表面。现已成为表面特种印刷或装饰的一种方式
    发表于 07-20 14:03

    深圳对位系统怎么样呢?

    深圳印刷机是特印设备中的一个种类,广泛应用于工业用品及塑胶、玻璃、金属片、陶瓷片、电子板等等。丝印原理是通过丝(网)印刷的技术,将特定图案印刷到既定材料表面。现已成为表面特种印刷或装饰的一种
    发表于 09-08 15:59

    深圳CCD双头打孔机系统有什么特点?

    如今越来越多的企业引进全自动打孔机作为定位孔加工的专用设备,取代传统多人员操作设备,大大节省成本开支,提高了产品的质量,加快生产速度,减少了报废率,提高了企业的市场竞争力,是很多企业密而不宣
    发表于 10-14 14:21

    LPC1768UK盘包装资料分享

    LPC1768UK盘包装手册
    发表于 12-07 06:41