当前位置: 首页 > article >正文

Docker数据卷管理及优化

一、基础概念

        1.docker数据卷是一个可供容器使用的特殊目录,它绕过了容器的文件系统,直接将数据存在宿主机上。

        2.docker数据卷的作用:

                数据持久化:即使容器被删除或重建数据卷中的数据仍然存在

                数据共享:多个容器可以同时挂载同一个数据卷实现数据的共享和交互

                独立于容器生命周期:数据卷的生命周期独立于容器,不受容器的启动、停止和删除的影响。

        3.使用数据卷的原因:

                docker分层文件系统:

                        性能差并且生命周期和容器相同

                docker提供两种卷:

                        bind mount

                        docker managed volume

        4.bind mount数据卷:

                将主机的目录文件或文件mount到容器里

                使用-v选项指定路径,如果-v指定的路径不存在挂载时会自动创建

                示例:

[root@docker ~]# docker run -it --rm \
-v /tmp/data1:/data1 \
-v /tmp/data1:/data2:ro \
-v /etc/passwd:/data/passwd:ro busybox
/ # tail -n 3 /data/passwd
lee:x:1000:1000:lee:/home/lee:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
nginx:x:1001:1001::/home/nginx:/sbin/nologin
/ # touch /data1/leefile1
/ # touch /data2/leefile1
touch: /data2/leefile1: Read-only file system

        5.docker managed数据卷:

                bind mount必须指定host文件系统路径限制了移植性

                docker managed volume不需要指定mount源,docker自动为容器创建数据卷目录

                默认创建的数据卷目录都在/var/lib/docker/volumes中

                如果挂载时指向容器内已有的目录,原有数据会被复制到volume中

                示例:

[root@docker volumes]# docker run -d --name mysql -e MYSQL_ROOT_PASSWORD='lee'
mysql:5.7
[root@docker volumes]# ls -l /var/lib/docker/volumes
总用量 0
drwx-----x 3 root root 19 8月 20 16:34
ad74662b8d6bb6fdcc6e82925ae9942b94bac5f9da4bd52b0a14ac451ae9ef75
[root@docker volumes]# touch
ad74662b8d6bb6fdcc6e82925ae9942b94bac5f9da4bd52b0a14ac451ae9ef75/_data/leefile
[root@docker volumes]# docker exec -it mysql bash
bash-4.2# cd /var/lib/mysql
bash-4.2# ls
auto.cnf client-cert.pem ib_logfile0 ibtmp1 mysql.sock
public_key.pem sys
ca-key.pem client-key.pem ib_logfile1 leefile performance_schema server-
cert.pem
ca.pem ib_buffer_pool ibdata1 mysql private_key.pem server-
key.pem
bash-4.2# pwd

                docker volume prune:清理未使用的docker数据卷

        建立数据卷:

                docker volume  create test,这条命令执行会在默认的数据卷目录下(/var/lib/docker/volumes/)创建test目录,并在该目录下创建_data目录

        查看数据卷:

                docker volume ls,执行这条命令会查看到上述创建的数据卷

        使用建立的数据卷:

                docker run -d --name web1 -p 80:80 -v test:/usr/share/nginx/html nginx

        6.数据卷容器:

                是docker中一种特殊的容器,主要方便的在多个容器之间共享数据卷。

                建立数据卷容器:

[root@docker ~]# docker run -d --name datavol \
-v /tmp/data1:/data1:rw \
-v /tmp/data2:/data2:ro \
-v /etc/resolv.conf:/etc/hosts busybox

                使用数据卷容器:

                        docker run -it --name test --rm --volumes-from datavol  busybox

        7.bind mount数据卷和docker managed数据卷对比:

                相同点:两者都是host文件系统中的某个路径

                不同点

        8.备份与迁移数据卷:

                建立容器并指定使用卷要备份的容器:

                docker run --volumes-from  datavol  -v `pwd`:/backup  busybox  tar zcf /backup/data1.tar.gz  /data1        将当前目录挂载到本地容器中用于和容器交互保存要备份的容器,备份数据到本地

                数据恢复:

docker run -it --name test -v leevol1:/data1 -v `pwd`:/backup busybox /bin/sh -
c "tar zxf /backup/data1.tar.gz;/bin/sh"


http://www.kler.cn/a/533384.html

相关文章:

  • 什么是数据库代理
  • Java牙科诊所管理系统web医院病例挂号预约平台springboot/ssm代码编写
  • 一次线程数超限导致的hive写入hbase作业失败分析
  • 为AI聊天工具添加一个知识系统 之77 详细设计之18 正则表达式 之5
  • 蓝桥与力扣刷题(141 环形链表)
  • VSCode设置内容字体大小
  • 计算机网络之数据链路层(数据链路层的功能)
  • 最新道路运输安全员管理人员考试真题
  • 通过docker安装部署deepseek以及python实现
  • java:mysql切换达梦数据库(五分钟适配完成)
  • 亚远景-从SPICE到ASPICE:汽车软件开发的标准化演进
  • DeepSeek辅助学术写作查找概念效果如何?
  • Java爬蟲與代理伺服器的應用
  • 机器学习之数学基础:线性代数、微积分、概率论 | PyTorch 深度学习实战
  • c++常见位运算
  • Jsoup库具体怎么用?
  • 嵌入式工程师必学(143):模拟信号链基础
  • Unity 2D实战小游戏开发跳跳鸟 - 游戏开始UI界面及逻辑
  • 前端 | 浅拷贝深拷贝
  • chrome插件模板;使用 React 18 和 Webpack 5 的 Chrome 扩展样板
  • 【Linux网络编程】:URL(encode),HTTP协议,telnet工具
  • w193基于Spring Boot的秒杀系统设计与实现
  • 前端导出Excel表格
  • 【Redis_2】短信登录
  • 常用集合的简单总结
  • VSCode编辑前端快速开发模板