【云原生Docker】08-Docker存储

这篇具有很好参考价值的文章主要介绍了【云原生Docker】08-Docker存储。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【云原生|Docker】08-Docker存储

简介

​ Docker 存储是指 Docker 容器中用来保存数据和文件的机制。在 Docker 中,容器本身是临时的,当容器停止或删除时,容器中的数据和文件也会被清除。因此,为了持久化保存容器中的数据和文件,我么就需要使用Docker的存储机制。

Docker存储

挂载方式

docker提供数据卷来实现数据共享与持久化,而数据卷的挂载有两种方式:

  • 挂载主机目录
  • 数据卷容器

挂载方式介绍

挂载主机目录
  • Type: bind
	绑定挂载是将宿主机上的目录或文件挂载到容器中的目录,从而实现容器中的数据和宿主机上的数据共享。绑定挂载使用 -v 或 --mount 参数来指定要挂载的宿主机目录和容器目录。这种方式的主要优势在于可以直接使用宿主机上的文件系统,可以方便地进行数据交换和备份。
  • Type: volume
	数据卷是 Docker 中一种特殊的目录,可以在容器和宿主机之间共享数据,也可以在容器之间共享数据。数据卷可以使用 docker volume create 命令创建,也可以在容器启动时使用 -v 或 --mount 参数来指定要挂载的数据卷。数据卷的主要优势在于可以在容器删除后保留数据,并且可以在不同的容器之间共享数据。
  • bind: 在docker inspect查看容器信息中mounts.type为bind类型;
  • volume: 在docker inspect查看容器信息中mounts.type为volume类型;
数据卷容器
	数据卷容器是一种特殊的Docker容器,其主要作用是管理Docker Volume,并将其共享给其他容器使用。具体来说,数据卷容器可以通过挂载Docker Volume来创建一个持久化的数据存储空间,并将其挂载到其他Docker容器中使用。

特性

数据卷是一个可供容器使用的特殊目录,它绕过文件系统,可以提供很多有用的特性:

  • 数据卷可以在容器之间共享和重用
  • 对数据卷的修改会立马生效
  • 对数据卷的更新不会影响镜像
  • 卷会一直存在,只到没有容器使用

Docker存储示例

挂载主机目录

Type: bind
  • Step1: 挂载一个宿主机目录作为数据卷
# #将宿主机的/root/data目录挂载至容器的/usr/share/nginx/html目录
docker  run -d  --name nginx_test -v /root/data:/usr/share/nginx/html:rw  nginx

# docker挂载数据卷的默认为权限为读写(rw),用户也可以通过ro指定为只读:
docker  run -d  --name nginx_test -v /root/data:/usr/share/nginx/html:ro  nginx

当 /root/data或/usr/share/nginx/html不存在的时候,/root/data会在宿主机上自动创建;/usr/share/nginx/html会在容器内自动创建。

  • *** Step2:*** 查看挂载类型
docker  inspect   nginx_test

【云原生Docker】08-Docker存储

Type:文件系统类型,可以是bind、volume、tmpfs等。
Source:挂载的源路径,可以是宿主机上的路径、Docker Volume的名称、tmpfs的名称等。
Destination:挂载的目标路径,即文件系统在容器内的挂载路径。
Mode:文件系统的访问权限控制,可以是read-write或read-only。
RW:表示是否为读写模式。
Propagation:表示Propagation mode的设置值。

Type: volume
  • Step1: 不指定宿主机目录,

默认会在宿主机的/var/lib/docker/volume下创建

# 不指定宿主机目录,挂载到容器的/usr/share/nginx/html
docker  run -d  --name nginx_test -v /usr/share/nginx/html  nginx
  • Step1: 也可以通过docker volume create 来创建存储卷
docker  volume  create my_volume
  • **Step2: **指定创建的存储卷
docker  run -d  --name nginx_test -v my_volume:/usr/share/nginx/html  nginx
  • *** Step2:*** 查看挂载类型

【云原生Docker】08-Docker存储

【云原生Docker】08-Docker存储

总结
  • -v 指定宿主机目录创建出来的容器的Mounts.type为 bind
  • -v 不指定宿主机目录(或 指定创建vomule)创建的容器的Mounts.type 为volume
  • 使用volume方式的时候,会将容器目录中的所有文件映射到宿主机目录中,而挂载主机目录的时候不会。

【云原生Docker】08-Docker存储

  • 特别注意:volume实际上也是挂载宿主机目录,上面只是区分两种挂载方式而已。

数据卷容器

  • Step1: 创建一个数据卷容器
 #创建一个数据卷容器dbdata,并创建一个数据卷挂载至/dbdata
docker run -it -v /dbdata --name dbdata  centos   
  • Step2: 其他容器可以通过–volumes-from来挂载dbdata容器中的数据卷:
docker run -it --volumes-from dbdata --name db1 centos
docker run -it --volumes-from dbdata --name db2 centos

容器db1和db2都挂载同一个数据卷到/dbdata目录,三个容器任何一方在该目录的写入,其他 容器都能看到.

–volumes-from参数可以多次使用,从多个容器挂载多个数据卷

如果删除了挂载的容器,数据卷并不会被自动删除,如果要删除一个数据卷,必须在删除最后一个还挂载着它的容器时显示的使用docker rm -v 命令来指定同时删除关联的容器。

利用数据卷容器迁移数据

备份数据:
  • Step1: 创建含有数据的容器dbdata
docker run -d --name dbdata -v /dbdata  centos
  • Step2: 创造点生产数据
docker cp /var/log/ dbdata:/dbdata
  • Step3: 备份数据
  1. 先创建一个容器worker,并使用–volumes-from将dbdata挂载到worker容器,然后使用-v参数将容器的/backup目录映射到宿主机的backup目录。然后在容器中执行备份操作,这样就把数据备份到宿主机的/backup目录中了
docker run -it --volumes-from dbdata -v /backup:/backup --name worker centos  tar zcf /backup/backup.tar.gz /dbdata

恢复数据:

创建一个新容器,并用-v参数挂载本地的备份目录,然后执行解压操作,将备份文件解压至/dbdata目录。

  • Step1: 创建新容器dbdata2
docker run -it -v /dbdata --name dbdata2 centos:6 /bin/bash 
  • Step2: 恢复
docker run -it --volumes-from dbdata2 -v /backup:/backup centos  tar xf /backup/backup.tar.gz  

Docker Volume命令

  • 查看主机上现有的数据盘
docker volume ls 
  1. 默认情况下,在删除容器时,docker并不会删除其数据盘,查看没有容器在使用的数据盘方法如下:
docker volume ls -f dangling=true
  1. 如果想要删除没有使用的数据盘,使用如下指令:
docker volume rm VOLUME_NAME
  1. 删除掉容器时,同时删掉数据盘,则使用:
docker rm -v container_name
  • 检查一个或多个数据卷的详细信息,包括数据卷的名称、驱动程序、挂载点等信息。
docker volume inspect my-volume
  • 删除所有未被挂载的数据卷。
docker volume prune
  • 删除一个或多个数据卷,可以指定数据卷名称或ID
docker volume rm my-volume
  • 创建volume
docker volume create my-volume

序、挂载点等信息。文章来源地址https://www.toymoban.com/news/detail-406639.html

docker volume inspect my-volume
  • 删除所有未被挂载的数据卷。
docker volume prune
  • 删除一个或多个数据卷,可以指定数据卷名称或ID
docker volume rm my-volume
  • 创建volume
docker volume create my-volume

到了这里,关于【云原生Docker】08-Docker存储的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【MySQL进阶-08】深入理解innodb存储格式,双写机制,buffer pool底层结构和淘汰策略

    MySql系列整体栏目 内容 链接地址 【一】深入理解mysql索引本质 https://blog.csdn.net/zhenghuishengq/article/details/121027025 【二】深入理解mysql索引优化以及explain https://blog.csdn.net/zhenghuishengq/article/details/124552080 【三】深入理解mysql的索引分类,覆盖索引(失效),回表,MRR https://bl

    2024年02月05日
    浏览(50)
  • 【Docker】 08-Dockerfile

    Dockerfile可以认为是Docker镜像的描述文件,是由一系列命令和参数构成的教程,主要作用是用来构建docker镜像的构建文件。 保留字 作用 FROM 当前镜像是基于哪个镜像的 第一个指令必须是FROM MAINTAINER 镜像维护者的姓名和邮箱地址 RUN 构建镜像时需要运行的指令 EXPOSE 当前容器对

    2024年02月10日
    浏览(29)
  • 08-Docker-网络管理

    Docker 在网络管理这块提供了多种的网络选择方式,他们分别是 桥接网络 、 主机网络 、 覆盖网络 、 MACLAN 网络 、 无桥接网络 、 自定义网络 。 当使用无桥接网络时,容器不会分配 IP 地址,也不会连接到主机网络。这对于特殊应用或需要完全手动配置网络设置的情况有用。

    2024年02月06日
    浏览(49)
  • 08-Docker安装常用软件

    以安装 Mysql 5.7为例: 启动 Mysql 容器,并配置容器卷映射: 参数说明: -d - 后台运行容器并返回容器ID,即启动守护式容器 -p 3306:3306 - (宿主机端口 : 容器内软件端口)将容器的端口映射到主机的端口 -e - 为容器添加环境变量 -v 容器挂载 -name 起名 在 /app/mysql/conf 下新建 my

    2024年02月05日
    浏览(39)
  • 原生JavaScript实现本地存储(localStorage)和会话存储(sessionStorage)

    目录 一、简单介绍 二、localStorage本地存储 三、sessionStorage会话存储 本地存储和会话存储的目的,是将所输入的文件存入到浏览器中,在需要的时候,直接调用,但是本地存储和会话存储有着一定的区别,本地存储,在不主动删除的情况下,会一直保留在浏览器中,会话存储是

    2023年04月08日
    浏览(48)
  • PureFlash云原生存储部署方法

    PureFlash是一个开源存储系统,它能为云计算和传统应用提供块存储服务。PureFlash最显著的优势是其高性能,每节点能提供超过100万IOPS随机写IO。 PureFlash可以以云原生的方式部署,并为云原生应用提供持久存储。 PureFlash存储系统简介:https://blog.csdn.net/winux/article/details/11443625

    2024年02月08日
    浏览(25)
  • 尚硅谷Docker实战教程-笔记08【高级篇,Docker复杂安装详说】

    尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】 视频地址:尚硅谷Docker实战教程(docker教程天花板)_哔哩哔哩_bilibili 尚硅谷Docker实战教程-笔记01【基础篇,Docker理念简介、官网介绍、平台入门图解、平台架构图解】 尚硅谷Docker实战教程-笔记02【基础篇,Do

    2024年02月12日
    浏览(47)
  • 【DevOps-08-3】Jenkins容器内部使用Docker

    构建镜像和发布镜像到harbor都需要使用到docker命令。而在Jenkins容器内部安装Docker官方推荐直接采用宿主机带的Docker即可。 设置Jenkins容器使用宿主机Docker。

    2024年01月16日
    浏览(48)
  • 【云原生 | Kubernetes 系列】— Kubernetes存储方案

    目录 【云原生 | Kubernetes 系列】— Kubernetes存储方案 🍇 一、基本存储 EmptyDir HostPath NFS 搭建nfs服务器 🍋 二、高级存储 PV和PVC pv pvc 演示 -NFS StorageClass(动态存储) StorageClass准备 创建deployment应用StorageClass 创建StatefulSet应用StorageClass 🥭三、配置存储 ConfigMap ConfigMap 的创建

    2024年02月03日
    浏览(48)
  • 云原生Kubernetes:K8S存储卷

    目录 一、理论 1.存储卷 2.emptyDir 存储卷 3.hostPath卷 4.NFS共享存储 5.PVC 和 PV 6.静态创建PV 7.动态创建PV 二、实验  1.emptyDir 存储卷 2.hostPath卷 3.NFS共享存储 4.静态创建PV 5.动态创建PV 三、问题 1.生成pod一直pending 2.shoumount -e未显示共享目录 3.静态创建pv 报错 4.使用 Deployment 来创建

    2024年02月07日
    浏览(74)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包