首页 > 其他分享 >Docker03-数据卷与数据卷容器

Docker03-数据卷与数据卷容器

时间:2024-05-10 10:03:39浏览次数:29  
标签:容器 run 删除 -- Docker03 docker 数据

容器非持久化存储

每个Docker容器都有非持久化存储。
非持久化存储是创建容器时自动创建的,因此从属于容器,生命周期与容器相同,即删除容器也会删除全部非持久化数据。
默认情况下,非持久化存储是容器全部文件和文件系统保存的地方。

创建

使用 docker run -v 命令可以在创建容器时直接挂载一个数据卷。这个数据卷是临时性的,它随着容器的生命周期而存在,容器停止后会自动删除。
使用这种方法创建的数据卷与特定容器紧密绑定,只能由该容器使用,并且在容器停止后会自动删除。
这种方法适用于需要在容器生命周期内临时共享数据的情况。
docker run -it -v /HostVolume:/ContainerVolume mynginx
docker run -it -v /HostVolume:/ContainerVolume:ro mynginx    # 容器对这个目录中的文件有只读权限
docker run -it -v /HostVolume:/ContainerVolume:ro --privileged=true mynginx

--privileged=true  让容器获得宿主机的root权限

数据卷的指定,冒号后边的容器路径要使用绝对路径
宿主机可以使用相对路径,路径为/var/lib/docker/volumes/指定的路径
如果 -v没有指定宿主机目录,默认路径为/var/lib/docker/volumes/docker随便起的名
如果指定的主机目录不存在,目录自动创建

非持久化存储的位置:
在Linux系统中,位于/var/lib/docker/<storage-driver>/
在Windows系统中,位于C:\ProgramData\Docker\windowsfilter\

容器的持久化存储

数据卷

数据卷(Data Volumes)是一个可供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似于Linux中的mount行为。

特点:
1.数据卷可以在容器之间共享或重用数据
2.对数据卷中的数据进行更改会立即生效
3.数据卷中的更改不会影响镜像
4.数据卷的生命周期一直持续到没有容器使用它为止,之后可以卸载它。被容器使用的数据卷无法删除

docker volume create:
使用 docker volume create 命令可以在 Docker 中独立地创建一个数据卷。这个数据卷可以在多个容器之间共享,并且可以手动管理其生命周期。
使用这种方法创建的数据卷是独立于容器的,它们可以在容器之间共享,甚至在容器停止或删除后仍然存在。
这种方法适用于需要持久性存储并且希望手动管理数据卷的情况。

基本语法格式

docker volume COMMAND
    inspect     显示一个或多个卷的详细信息
    ls          列出所有卷
    create      创建卷
    prune       删除所有未使用的本地卷
    rm          删除一个或多个卷

查看数据卷

docker volume ls [OPTIONS]
    -f, --filter filter   提供过滤值 (e.g. 'dangling=true')
    -q, --quiet           只显示卷名
    --format string       使用给定的Go模板格式化输出

docker volume inspect [OPTIONS] VOLUME [VOLUME...]
    -f, --format string   使用给定的Go模板格式化输出

创建数据卷

docker volume create [OPTIONS] [VOLUME]
    -d, --driver string   指定卷驱动器名称 (default "local")
    --label list          设置卷的元数据

默认情况下,Docker创建新卷时采用内置的local驱动。即本地卷只能被所在节点的容器使用。
使用-d参数可以指定不同的驱动。
普通数据卷在宿主机的/var/lib/docker/volumes/目录下。

删除数据卷

#删除一个或多个卷。不能删除容器正在使用的卷
docker volume rm [OPTIONS] VOLUME [VOLUME...]
    -f, --force       强制移除一个或多个卷

#删除所有未使用的本地卷
docker volume prune [OPTIONS]
    --filter filter   提供过滤值(e.g. 'label=<label>')
    -f, --force       不提示确认

#删除容器卷并删除卷
docker rm mynginx -v

docker volume prune会删除未装入到某个容器或者服务的所有卷,所以谨慎使用!
docker volume rm允许删除指定卷。
两种删除命令都不能删除正在被容器或者服务使用的卷。

使用数据卷

docker container run --name 容器名 --mount type=volume,source=数据卷名,destination=容器路径 -d image[:tag]     #普通数据卷

docker container run --name 容器名 --mount type=tmpfs,tmpfs-size=512M,destination=容器路径 -d image[:tag]     #临时数据卷

docker container run --name 容器名 --mount type=bind,source=宿主机路径,destination=容器路径 -d image[:tag]     #绑定数据卷

--mount选项支持三种类型的数据卷:
volume:普通数据卷,映射到主机var/lib/docker/volumes路径下。
如果指定了已经存在的卷,Docker会使用该卷。
如果指定的卷不存在,Docker会创建一个卷。

bind:绑定数据卷,映射到主机指定路径下。
宿主机目录的路径必须是绝对路径,使用前必须存在。
容器内路径可以为相对路径。如果不存在,Docker会自动创建。

tmpfs:临时数据卷,只存在于内存中。
可以在创建容器时将宿主机的任意路径挂载到容器内作为数据卷,这种形式创建的数据卷称为绑定数据卷。

使用dockerfile创建数据卷

1.新建文件夹用来放置Dockerfile
mkdir /mydocker

2.编写Dockerfile
vim /mydocker/Dockerfile
FROM nginx:latest
VOLUME ["/ContainerVolume1","/ContainerVolume2"]  # 不指定主机路径,目录位于/var/lib/docker/volumes

3.build后生成镜像
docker build -f /mydocker/Dockerfile -t nginx:v2 .  # .不能省略,表示当前路径,也就是说要指定Dockerfile文件的路径
-f 指定dockerfile文件
-t  这里是指定镜像的名称和标签

4.run启动容器
docker run -itd --name v1nginx nginx:v2

数据卷容器

1.用于容器间共享数据,本身就是个普通容器,专门用来提供数据卷供其他容器挂载使用
2.删除容器,数据卷不会被自动删除。
3.如果要删除数据卷,必须在删除最后一个还挂载着它的容器时使用docker rm -v 命令来指定同时删除关联的容器

容器db1、db2挂载同一个数据卷到/dbdata目录,三个容器任何一个在该目录下写入,其他容器都可以看到

docker run -itd -v /dbdata --name volume1 busybox  # 创建
docker run -itd  --volumes-from volume1 --name web1 nginx  # 其他容器挂载
docker run -itd  --volumes-from volume1 --name web2 nginx  # 其他容器挂载

--volumes-from  指定父容器

利用数据卷容器迁移数据

备份

# 创建要备份的容器test1,备份目录为/dbdata
docker run -itd -v /dbdata --name test1 ubuntu

docker run —rm --volumes-from test1 \
-v $(pwd):/backup ubuntu \
tar cvf /backup/backup.tar /dbdata

利用ubuntu镜像创建备份用容器,备份完成后自动删除
挂载数据卷至/dbdata
挂载主机当前路径到容器的/backup目录
容器启动后将/dbdata目录打包至/backup/backup.tar

恢复

# 创建接收备份数据的容器test2,恢复目录为/dbdata2
docker run -itd -v /dbdata2 --name test2 ubuntu  

docker run —-rm --volumes-from test2 \
-v ${pwd}:/backup ubuntu \
tar xvf /backup/backup.tar -C /dbdata2

卷插件-Convoy

单节点卷管理插件,提供创建、删除、备份和还原数据卷的功能

安装
tar zxf convoy.tar.gz
cp convoy/{convoy,convoy-pdata_tools}  /usr/local/bin
mkdir -p /etc/docker/plugins/
echo "unix:///var/run/convoy/convoy.sock" > /etc/docker/plugins/convoy.spec

运行
convoy daemon --drivers vfs --driver-opts vfs.path=/data
# convoy支持多种存储驱动,这里选择VFS,并设置路径为/data

使用
dokcer run -it -v volTest:/test --volume-driver=convoy busybox /bin/sh
# volTest为卷名,挂载到容器/test路径

d5e1a6e7c826bd496c75d65c99a9cf82.png

convoy的plugin handler模块会监听一个端口,与docker通信,并响应docker的卷插件REST API。插件在接到API请求后,会通过Volume-Mgr模块将一个远程或本地的存储挂载到服务器端,并将挂载路径发送给Docker,Docker把卷插件返回的路径挂载到容器中。挂载的只是数据卷,卷中的数据还是存储在远程或本地

插件发现

docker通过json文件、套接字文件或*.spec文件来查询插件的地址

查找顺序
/run/docker/plugins/下的套接字
/etc/docker/plugins
/usr/lib/docker/plugins

标签:容器,run,删除,--,Docker03,docker,数据
From: https://www.cnblogs.com/lixunblogs/p/18167359

相关文章

  • 如何在保证企业研发数据安全的同时,提升交换效率?
    企业研发数据对企业而言具有至关重要的意义,如半导体IC设计、生物制药、科研单位等,研发数据就是其最核心的数据资产,研发成果就是其生命力的根本。企业⼀般通过使⽤FTP应⽤、U盘等移动介质、邮件等方式,进行数据的传输,但存在一定的安全隐患:1、FTP传输:FTP明文传输,传输不加密,容易被......
  • mysql导入导出整个数据库
    要将整个MySQL数据库导入到另一个MySQL实例中,您可以使用mysqldump工具导出数据库,并使用mysql客户端导入它。以下是一般的步骤:1. 导出数据库使用mysqldump工具导出数据库到一个SQL文件。例如,如果您要导出名为mydatabase的数据库,可以这样做:mysqldump-u[username]-pmydatabas......
  • 怎样的跨网软件,可以实现网间数据的安全收发?
    网络隔离已是较为常见的网络安全保护措施,比如防火墙、网闸、VLAN,云桌面虚拟环境等方面进行隔离。像一些科技研发型企业,不仅仅是内外网隔离,甚至还划分办公网、研发网、测试网、生产网等,防止研发资料、设计资料等敏感信息泄漏。但隔离后仍存在文件数据需要进行流转的场景,即需要使用......
  • 详解Python 中可视化数据分析工作流程
    本文分享自华为云社区《Python可视化数据分析从数据获取到洞见发现的全面指南》,作者:柠檬味拥抱。在数据科学和分析的领域中,可视化是一种强大的工具,能够帮助我们理解数据、发现模式,并得出洞见。Python提供了丰富的库和工具,使得可视化数据分析工作流程变得高效而灵活。本文将介绍......
  • 机台数据管控怎么做,能够提高效率促进企业快速发展?
    机台数据管控是制造企业信息化管理的重要组成部分,它涉及对生产设备(机台)所产生的数据进行有效的收集、存储、处理和应用。良好的机台数据管控能够帮助企业提高生产效率、降低成本、优化资源配置以及保障生产安全。以下是机台数据管控的几个关键点:数据收集:实时采集机台的运行数据,包......
  • 实验六 通用接口数据库编程
    1关:JDBC查询数据packagestep1;importjava.sql.*;publicclassQuery{ publicstaticvoidqueryDB(){ //声明变量 Connectionconn=null; Statementstat=null; ResultSetrs=null;//"root"和"123123"是针对MySQL设置了用户名(roo......
  • 【高薪诚聘】数据库精英,加入我们,共创数据未来!
    我们寻找的你:【如果你是数据库架构专家】对数据库架构有深入的了解和实践经验,能够为公司构建稳定、高效、可扩展的数据库架构;对各种数据库系统有深入的理解,包括但不限于MySQL、Oracle、SQLServer等,并能够根据实际业务需求进行选择和优化;对新技术和新架构保持敏感,有能力推动公......
  • 【专题】2022年中国企业数字化学习行业研究报告PDF合集分享(附原数据表)
    报告链接:http://tecdat.cn/?p=32263多变,不确定性,复杂,模糊不清的新业务图景,加快了公司人才发展模式的数字化转变;疫情冲击离线运输与公司现金流量,消费者支出减少,机构表现受压,数字化学习突破;行业数字化水平不断提高,商业体系和学习体系之间的关联性不断加强,企业学情图谱不断完善; 阅......
  • 【专题】展望人工智能银行:当银行遇到AI报告PDF合集分享(附原数据表)
    原文链接:http://tecdat.cn/?p=32210在2016年,AlphaGo机器人打败了18届世界棋王李世石,成为了世界棋坛上最伟大的人物。阅读原文,获取专题报告全文,解锁154份文末人工智能银行相关报告。围棋是一种非常复杂的棋类,它要求有很强的直觉,想像力和策略性的思考,而这一切在很长一段时间里都......
  • 数据处理相关
    1、数据来源-----1、调查数据和观察数据-----2、数据库数据----关系型数据和非关系型数据-----3、爬虫数据-----4、日志数据2、数据类型-----1、结构化数据----基本数据类型、二维表结构数据-----2、集合数据类型----列表、元组、字典、集合、推导......