首页 > 其他分享 >docker存储配置与管理

docker存储配置与管理

时间:2024-04-26 11:58:16浏览次数:22  
标签:容器 存储 管理 主机 存储配置 挂载 docker Docker

一、Docker存储概念

1、容器本地存储与Docke存储驱动

容器本地存储:每个容器都被自动分配了内部存储,即容器本地存储。采用的是联合文件系统。通过存
储驱动进行管理。
容器本地存储空间:分层结构构成,由一个可写容器层和若干只读的镜像层组成。
联合文件系统:Docker的一种底层技术,由存储驱动(Storage Driver)实现。相应的存储驱动有aufs、overlay、overlay2、devicemapper、btrfs、zfs、vfs等。
存储驱动:控制镜像和容器在 docker 主机上的存储和管理方式。
每个Docker主机只能选择一种存储驱动,不能为每个容器选择不同的存储驱动。

(1)查看主机支持的存储驱动

语法:docker info

点击查看代码
 Storage Driver: overlay2 # 存储驱动是overlay2
 Backing Filesystem: xfs # 底层文件系统是xfs
 Supports d_type: true # 支持d_type
 Native Overlay Diff: true
 userxattr: false

(2)Linux发行版支持的存储驱动

您的操作系统和内核可能不支持每个存储驱动程序。
通常,以下配置适用于最新版本的Linux发行版:
image

(3)可支持的文件系统

关于Docker,备份文件系统是/var/lib/doker/所在的文件系统。某些存储驱动程序仅适用于特定的备份文件系统。
image

(4)更改现有的存储驱动

注意:

主机只能选择一个存储驱动。
系统版本和存储驱动的兼容问题。
更改存储驱动会使得现有的容器和镜像不可访问(原因:每种存储驱动存储镜像层的
位置是不同的)
但恢复存储驱动,可以再次访问之前的镜像和容器

2、容器和非持久化数据

非持久化数据:不需要保存的数据。容器本地存储中的数据属于非持久化数据。
容器创建时会创建非持久化存储,非持久化存储自动创建,从属于容器,生命周期与容器相同。删除容器也会删除全部非持久化数据。
非持久化数据存在问题:

  1. 这类数据从属于容器,生命周期与容器相同,会随着容器的删除而被删除.(易丢失)
  2. 当该容器不再运行时,数据不会持久保存,如果另一个进程需要,则可能很难从该
    容器中获取数据。(难获取)
  3. 容器的可写层与运行容器的Docker主机紧密耦合,无法轻松地将数据转移到其他位
    置。(难转移)
  4. 写入容器的可写层需要Docker存储驱动管理文件系统。存储驱动使用Linux内核提供的联合文件系统,其性能不如直接写入主机文件系统的Docker卷。(读写性能差)

3、容器和持久化数据

持久化数据:需要保存的数据。例如:日志、业务数据、客户信息等有用的数据。
外部存储:Docker通过将主机中的文件系统挂载到容器中供容器存取,从而实现持久化数据存储。
容器持久化数据存储方式:Docker目前支持卷、绑定挂载,这两种挂载类型实现容器的持久化。
卷(数据卷):Docker中进行持久化数据存储的最佳方式。本质是Docker主机文件系统中的目录或文件直接挂载到容器的文件系统中。
特点:

1.卷和容器是解耦的,可以独立地创建并管理卷
2.卷不与容器的生命周期绑定(容器的停止删除和卷无关)
3.可以将任意数量的卷装入容器,多个容器也可以共享一个或多个卷(多对多关系)

4、挂载类型

往容器中挂载的外部文件系统主要有:卷、绑定挂载、tmpfs挂载。无论哪种挂载,对容器内部来说是一样的,都会显示为文件或目录。

(1)卷

卷是Docker持久化存储数据的最佳方式。卷支持使用卷驱动,可以让用户将数据存储在远程主机或云提供商处等。

卷存储在主机文件系统中由Docker管理的位置,在Linux主机上该位置默认是
/var/lib/docker/volumes 目录。

可以以命名方式或匿名方式挂载卷:

  1. 匿名卷(Anonymous Volumes):首次挂载容器未指定名称,Docker为其随机指定一个唯一名称。
  2. 命名卷(Named Volumes):指定明确名称,和匿名卷其他特性相同。

卷适合以下应用场景:

  1. 在多个正在运行的容器之间共享数据。(数据共享)
  2. 当Docker主机不能保证具有特定目录结构时,卷有助于将Docker主机的配置与容器运行时解耦。(构建新目录与主机不同)
  3. 当需要将容器的数据存储到远程主机或云提供商处,而不是本地时。(可以远程挂载卷,公有云、灾备等场景)
  4. 当需要在两个Docker主机之间备份、恢复或迁移数据时。(主机间备份迁移)

(2)绑定挂载

绑定挂载可以存储到主机系统的任意位置,甚至会存储到一些重要的系统文件或目录中。
特点:

  1. 主机上进程或容器可以随时修改。
  2. 相比卷,功能更受限、性能更高。
  3. 绑定挂载运行访问敏感文件。

绑定挂载适合以下应用场景。

  1. 在主机和容器之间共享配置文件。
  2. 在Docker主机上的开发环境和容器之间共享源代码或构建工件。
  3. 当Docker主机上的目录结构保证与容器要求的绑定挂载一致时。

(3)tmpfs挂载

tmpfs挂载仅限于运行Linux操作系统的Docker主机使用,它只存储在主机的内存中,不会被写到主机的文件系统中,因此不能持久保存容器的应用数据。

在不需要将数据持久保存到主机或容器中时,tmpfs挂载最合适。

如果容器产生了非持久化数据,那么可以考虑使用tmpfs挂载避免将数据永久存储到任何位置,并且通过避免写入容器的可写层来提高容器的性能。

二、Docker卷管理

docker volume 是Docker卷的管理命令。

创建卷的时候主机上的Docker根目录(linux默认是/var/lib/docker)下的volumes子目录内会生成一个以卷名命名的子目录,这个子目录里面再创建一个_data的子目录作为卷的数据存储路径。卷名必须唯一,不同的卷驱动不能使用相同的卷名。

1、创建卷

语法:docker volume create 卷名
选项:
-d //说明卷驱动名称(默认是'local') --label list //设置卷元数据
-o //设置驱动特殊选项
案例1:创建tmpfs卷,大小100m,uid为1000
image
案例2:创建匿名卷
语法:ddocker volume create

2、查看卷列表

使用 docker volume ls 命令列出当前的卷。

3、查看卷详细信息

使用 docker volume inspect 命令查看卷详细信息。包含卷在Docker主机文件系统中的具体位置。

4、删除卷

使用 docker volume rm 删除指定卷(不能删除正在被容器使用的卷)。
使用 docker volume prune 删除未被容器或服务使用的所有卷。
使用 dicker volume rm 删除未被使用的卷

语法:docker volume rm 卷名 //删除指定卷
选项: -f //强制删除

三、容器文件系统挂载

使用 docker run 或 docker create 命令的相关选项将外部的文件系统挂载到容器中。
早期版本:

  1. 卷和绑定挂载都可以通过 -v 和 --mount 选项挂载到容器中,主要是两者的语法的细微区别。
  2. -v 用于独立容器, --mount 用于集群服务。
  3. tmpfs挂载可以使用 --tmpfs 选项。

docker 17.06或更高版本:

  1. 建议所有的容器或服务,绑定挂载、卷、tmpfs都使用 --mount 选项。(语法清晰、定制详细)
  2. --mount 选项也可以用于独立容器。

-v 和 --mount 的区别:

  1. -v 语法是将选项组合在一个字段中, --mount 的语法是将它们分开。
  2. --mount 采用键值对写法支持更多的设置选项, -v 写法更加简洁。

1、-v(--volume)选项

[root@hqs ~]# docker run(create)
-v, --volume=[host-src:]container-dest[:]: Bind mount a volume.

第一个host-src字段表示挂载源,来自主机的文件系统,为绝对路径或名称变量。
第二个container-dest字段表示挂载目标,即容器的挂载点,可以是目录或文件路径(绝对路径)
第三个options字段可选,以逗号分隔选项列表:
如:[rw|ro], [z|Z], [[r]shared|[r]slave|[r]p
rw:读写模式??
ro:只读模式
nocopy:禁止自动复制到卷存储地址

标签:容器,存储,管理,主机,存储配置,挂载,docker,Docker
From: https://www.cnblogs.com/sleep24/p/18159641

相关文章

  • 革新升级,PW7014完美替代ETA7014,打造更可靠、更高效的电源管理体验
    PW7014代替ETA7014有4点:一芯片的VIN奔溃电压高9V,二价格成本上的优势,三性能强,高温度,低阻抗(阻抗越低越好),四,OVP产品累计出货量超30KK,并无不良反馈,市场接受度高,经得住考验。PW7014在输入耐压上比ETA7014的崩溃电压大概高9V,如下图ETA7014的......
  • 如何进入 Docker Desktop for Mac 虚拟机
    由于DockerDesktop使用最小化定制的linuxkit作为一个虚拟机提供docker宿主服务一般情况我们无法直接进入因为并没有提供完整的bbusbox工具服务20.10.5)版本以前cd/Users/****/Library/Containers/com.docker.docker/Data/vms/0/screentty新版本20.10.5)之后nc-U......
  • Linux网络管理
    一、Docker网络概念1、网络驱动Docker网络子系统使用可插拔的驱动,默认情况下有多个驱动程序,并提供核心联网功能。bridge:桥接网络,这是默认的网络驱动程序(不指定驱动程序创建的容器默认是bridge驱动)。host:主机网络。消除容器和主机的网络隔离,直接使用主机的网络。overlay:覆......
  • 如何通过机台管理平台,构建采集管控通道,使业务能够有序开展?
    机台管理平台是用于监控和管理生产设备数据的综合系统,它对于提高生产效率、降低成本、提升产品质量等方面起着至关重要的作用。 常见的机台管理平台为机台自带的数据上报工具,但存在一定问题:1.统一采集难度:企业可能基于不同业务需求采购了不同厂商、规格、运作模式的机台设备,......
  • docker 日志驱动程序
    loggingdriver说明Docker中的日志驱动程序(loggingdriver)用于控制容器的日志记录方式,允许您将容器中生成的日志发送到不同的目标,如标准输出、文件、远程日志服务器等。loggingdriver类型none: 容器没有可用的日志,并且dockerlogs不返回任何输出。local: 日志以旨......
  • Docker - 基本概念、与虚拟机的区别、架构、镜像操作、容器操作、数据卷挂载
    Docker-基本概念、与虚拟机的区别、架构、镜像操作、容器操作、数据卷挂载 一、对Docker 的理解1、Docker基本概念我们平时开发大型项目组件较多,依赖关系复杂,环境差异大,通过Docker就可解决上述问题~ Docker就是一个快速交付应用、运行应用的技术:运行前后:......
  • 什么是 Docker?Docker详解,7分钟学会
    Docker容器是一种打包格式,可通过标准格式打包应用的所有代码和依赖关系,确保应用能够快速、可靠地在计算环境下运行。Docker容器是一种广受欢迎的轻量级、可执行的独立容器,其中包含应用运行所需的一切要素,包括库、系统工具、代码和运行时。此外,Docker还是一个软件平台,支持开发人......
  • Jenkins 权限配置管理-github用户权限管理
    写在前面的话背景:在一个企业研发部门内部,可能存在多个运维人员,而这些运维人员往往负责不同的项目,但是有可能他们用的又是同一个Jenkins的不同用户。那么我们就希望实现一个需求,能够不同的用户登录Jenkins以后看到不同的项目。Jenkins提供了简单的权限管理,我们可以在 系统......
  • 使用docker部署livox_camera_calib环境
    ROS系统安装使用fishros的一键安装脚本,选择ros1的kinetic版本。具体安装以及连接容器过程可查看视频Docker版ROS安装。注意:启动容器时应从命令行启动,不要在vscode中连接容器。否则在启动rviz时,程序会找不到显示输出设备,rviz会直接die。环境配置安装完Docker版本ROS后需要的再......
  • 【Docker系列】Section 2: Creating Kubernetes Development Clusters, Understandi
    继续上文,【Docker系列】Section2:CreatingKubernetesDevelopmentClusters,Understandingobjects,andExposingServices①引言:在Section2中,我们将转移到Kubernetes集群和对象。本节的第一章将解释如何使用一个流行的工具来创建库集群,称为KinD。我们将解释如何创......