Docker——Docker 容器数据卷(Volumes)

本文详细介绍了Docker数据卷的使用,包括匿名挂载、具名挂载以及DockerFile中配置数据卷的方式。通过实例演示了如何使用数据卷实现MySQL数据同步,以及多个数据卷容器挂载实现数据共享。强调了数据卷在容器数据持久化中的重要性,以及如何通过具名挂载方便地管理和查找卷。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

容器数据卷(Volumes)

容器数据卷概述

  • Docker 镜像是分层结构,联合挂载,镜像中各层的文件都是只读的,容器中所有文件对外可见的状态是多层叠加后的可见状态。因此对于IO性能要求较高的容器,如果使用Overlayfs会严重影响容器的性能。
  • 另外,容器在生命周期结束的时候会被删除,对于有数据持久化要求的容器而言,容器运行中有价值的数据并需要存储在外部的逻辑卷中。如果由容器直接使用共享存储系统,那么每次容器启动后都需要挂载,而且还需要具备与外界通信的能力,不仅繁琐,而且损失性能。
  • 针对这种需求,docker推出了卷管理系统,在容器创建时直接使用宿主机的存储系统,当容器结束运行时,不会删除卷中的数据。
    在这里插入图片描述
  • 如图中,宿主机将远程NFS服务器中的数据盘挂载到本地/data/目录下,创建httpd容器时,将本地的/data/盘映射到容器中的网站根目录:/data/html中。
  • 当httpd容器挂掉后,无论在哪台服务器,只要满足宿主机挂载NFS存储,并且httpd容器映射网站根目录到/data/html即可。针对不需要持久化存储的应用,则可以不使用存储卷管理。
  • 将宿主机上的目录挂载到容器中有两种方式:
    • Bind mount volume
      手动指定宿主机目录和容器中目录的映射关系,或使用容器编排工具(k8s或者docker-compose)指定
    • Docker-managed volume
      Docker自动管理的挂载关系,这种情况下宿主机目录不固定,后期维护成本高,仅用于存放一些临时数据

使用数据卷

直接使用命令来挂载 -v
docker run -it -p 主机端口:容器内端口
docker run -it -v 主机目录:容器内目录

docker run -it -v /home/ceshi:/home centos /bin/bash

docker inspect 容器id 	可以查看挂载信息
docker inspect 39f2fc482f42
...
"Mounts": [		挂载
            {
   
                "Type": "bind",
                "Source": "/home/ceshi",	主机内地址
                "Destination": "/home",		docker容器内的地址
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],
...

测试,我们在主机的/home/ceshi下创建文件
[root@docker ceshi]# touch maomao.py

容器内数据同步
[root@39f2fc482f42 home]# ls
maomao.py

然后我们在容器内创建文件
[root@39f2fc482f42 home]# touch zhuzhu.py

主机内也同步了文件
[root@docker ceshi]# ls
maomao.py  zhuzhu.py

再次测试
将容器关闭,然后在maomao.py里面写入代码,再启动容器验证数据是否同步

vim maomao.py
#!/usr/bin/python3
print('hello maomao')

[root@docker ceshi]# python3 maomao.py 
hello maomao

验证成功
[root@39f2fc482f42 home]# cat maomao.py 
#!/usr/bin/python3
print('hello maomao')

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值