Docker 数据卷

1、什么是数据卷

        通过镜像创建一个容器。容器一旦被销毁,则容器内的数据将一并被删除。但有些情况下,通过服务器上传的图片出会丢失。容器中的数据不是持久化状态的。这个时候可以通过数据卷来解决这个问题。

        数据卷是一个可供一个或多个容器使用的特殊目录。数据卷的特点是:1、数据卷可以在容器之间共享和重用。2、对数据卷的修改会立马生效。3、对数据卷的更新不会影响镜像。4、数据卷默认会一直存在即使容器被删除

        通俗一点而言,数据卷相当于硬盘,可以保存服务器的数据,即是服务器关闭了,数据依然不会丢失。

2、为什么需要数据卷

        这得从 docker 容器的文件系统说起。出于效率等一系列原因,docker 容器的文件系统在宿主机上存在的方式很复杂,这会带来下面几个问题:1、不能在宿主机上很方便地访问容器中的文件2、无法在多个容器之间共享数据3、当容器删除时,容器中产生的数据将丢失。

        所以引入数据卷的目的就是为了解决上诉的问题,实现多个容器共享数据,保存数据、方便宿主机访问容器中的数据。数据卷是存在于一个或多个容器中的特定文件或文件夹,这个文件或文件夹以独立于 docker 文件系统的形式存在于宿主机中。

        数据卷的最大特定是:其生存周期独立于容器的生存周期

3、使用场景

        1、在多个容器之间共享数据,多个容器可以同时以只读或者读写的方式挂载(引用/指向的意思)同一个数据卷,从而共享数据卷中的数据。

        2、当宿主机不能保证一定存在某个目录或一些固定路径的文件时,使用数据卷可以规避这种限制带来的问题。

        3、当你想把容器中的数据存储在宿主机之外的地方时,比如远程主机上或云存储上。

        4、当你需要把容器数据在不同的宿主机之间备份恢复迁移时,数据卷是很好的选择。

4、相关命令

        创建数据卷命令如下:

# 创建数据卷之后,默认会存放到目录: /var/lib/docker/volume/数据卷名称/_data目录下

docker volume create 数据卷名称

        查看数据卷命令如下:

# 查看数据卷
docker volume inspect 数据卷名称

# 查看全部数据卷信息
docker volume ls

        删除数据卷命令如下:

# 删除数据卷
docker volume rm 数据卷名称

5、应用数据卷:

        当你映射(意思就是这个容器的数据存储在这个数据卷里面)数据卷时,如果数据卷不存在,Docker 会帮你自动创建,即将容器内的某个文件夹挂载到宿主机的指定文件夹中。命令如下:

# 如果没有这个数据卷名称,docker会给你自动创建

docker run -v 数据卷名称:指定容器内的路径 镜像ID

eg:docker run -v xhf:/var/lib/docker/volumes tomcat:8

# 这种 volume 是在创建容器时从宿主机中挂载的,无论对容器进行任何操作都不会导致其在宿主机中被删除,如果不需要这些文件,只能手动删除。

        我们可以发现,我们上一节是将数据卷删除了的,执行完上面的方法之后,数据卷又被创建出来了,如下所示:

         接下来我们执行 eg 里面的命令,然后使用 cp 命令,向被数据卷指定的容器文件夹中放置文件,文件也会同步到数据卷中去,如下所示:

# 直接指定一个路径作为数据卷的存储位置

docker run -v 路径:容器内部的路径 镜像ID

eg:docker run --rm -d --name tomcat-8081 -p 8081:8080 -v /usr/local/docker/xhf_home/:/usr/local/tomcat/webapps/xhf_home tomcat:8

# -v 数据卷参数

# 将宿主机 /usr/local/docker/xhf_home/ 文件内的内容信息 挂载在容器 /usr/local/tomcat/webapps/xhf_home 目录下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/31676.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解决不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接的问题

问题概述: 用windows server 2012 r2 vl x64搭了个文件服务器,在使用时有个问题,老是用户登录有问题,提示“不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接”。出现的原因不详,网上也没查到合理的…

typescript找不到模块‘vue‘ ‘vue-router‘

import { createRouter, createWebHashHistory, createWebHistory } from vue-router 提示:找不到模块“vue-router”。你的意思是要将 "moduleResolution" 选项设置为 "node",还是要将别名添加到 "paths" 选项中?ts(27…

【HISI IC萌新虚拟项目】ppu模块基于spyglass的lint清理环境搭建与lint清理

关于整个虚拟项目,请参考: 【HISI IC萌新虚拟项目】Package Process Unit项目全流程目录_尼德兰的喵的博客-CSDN博客 前言 RTL代码在交付给验证同时进行功能验证时,可以同步进行lint的清理工作。一般而言影响编译和仿真的问题会在vcs的error和warning中被修正,因此清理lin…

Windows下Nacos的配置与使用

一、什么是 Nacos 以下引用来自 nacos.io Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用…

【Rust】2、实战:文件、网络、时间、进程-线程-容器、内核、信号-中断-异常

文章目录 七、文件和存储7.2 serde 与 bincode 序列化7.3 实现一个 hexdump7.4 操作文件7.4.1 打开文件7.4.2 用 std::fs::Path 交互 7.5 基于 append 模式实现 kv数据库7.5.1 kv 模型7.5.2 命令行接口 7.6 前端代码7.6.1 用条件编译定制要编译的内容 7.7 核心:LIBA…

详解Spring Cloud版本问题

目录 1.让人头疼的多版本号体系 2.目录关系 3.为什么会有多个版本号体系 1.让人头疼的多版本号体系 由于历史原因,spring cloud分为了Alibaba和Netflix两个体系。 想要了解原因以及整个spring cloud体系的来龙去脉的同学可以去看我的另一篇文章: S…

信息系统之网络安全方案 — “3保1评”

信息系统之网络安全方案 — “3保1评” 序:什么是“3评1保”?一、网络安全等级保护1.1 概念1.2等保发展1.3法律要求1.4分级及工作流程 二、涉密信息系统分级保护2.1概念2.2法律要求2.3分级及工作流程 三、关键信息基础设施保护3.1概念3.2关保的发展3.3法…

(UE4/UE5)Unreal Engine中使用HLOD

本教程将详细介绍在Unreal Engine的不同版本(4.20-4.24、4.25-4.26、5.2)中如何使用Hierarchical Level of Detail (HLOD)。注意,每个版本中使用HLOD的方法可能会有所不同。 一、预先生成LOD 步骤一:预先生成LOD打开UE4.21&…

C语言贪吃蛇课程设计实验报告(包含贪吃蛇项目源码)

文末有贪吃蛇代码全览,代码有十分细致的注释!!!文末有贪吃蛇代码全览,代码有十分细致的注释!!!文末有贪吃蛇代码全览,代码有十分细致的注释!!! 码文不易,给个免费的小星星和免费的赞吧,关注也行呀(⑅•͈ᴗ•͈).:*♡ 不要白嫖哇(⁍̥̥̥᷄д⁍̥̥…

解决Vuex刷新页面数据丢失的问题

参考: https://blog.csdn.net/qq_51441159/article/details/128047610 方法一(不使用插件): 1、直接在vuex修改数据方法中将数据存储到浏览器本地存储中 import Vue from vue; import Vuex from vuex;Vue.use(Vuex);export defa…

Java——《面试题——MyBatis篇》

前文 java——《面试题——基础篇》 Java——《面试题——JVM篇》 Java——《面试题——多线程&并发篇》 Java——《面试题——Spring篇》 目录 前文 1、什么是MyBatis 2、说说MyBatis的优点和缺点 3、#{}和${}的区别是什么? 4、当实体类中的属性名和…

Nginx-Goaccess(实时日志服务)

goaccess的功能 1、使用webscoket协议传输(双向传输协议)2、基于终端的快速日志分析器3、通过access.log快速分析和查看web服务的统计信息、PV、UV4、安装简单、操作简易、界面炫酷5、按照日志统计访问次数、独立访客数量、累计消耗的带宽6、统计请求次…

Redis知识点

Redis是一个数据库,不过与传统数据库不同的是Redis的数据库是存在内存中,所以读写速度非常快,因此 Redis被广泛应用于缓存方向。 除此之外,Redis也经常用来做分布式锁,Redis提供了多种数据类型来支持不同的业务场景。除…

Ansible剧本(playbook)

一、playbooks 概述以及实例操作 1、playbooks 的组成 playbooks 本身由以下各部分组成 (1)Tasks:任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行 (2)Variables&#xff1…

Ubuntu 22 服务器端安装图形化界面

文章目录 前言一、什么是图形化界面二、操作步骤1、更新安装工具2、开始安装3、重启 总结 前言 Ubuntu 系统做得是越来越好了,从CentOS 不再提供维护后,越来越多的企业和公司从CentOS转到Ubuntu服务器系统,转了之后才发现,它比Ce…

MySQL数据库日志管理、备份与恢复

目录 一、MySQL 日志管理 二、数据备份的重要性 造成数据丢失的原因 三、数据库备份的分类 1 、从物理与逻辑的角度 (1)备份划分 (2) 物理备份方法 2、 从数据库的备份策略角度 四、常见的备份方法 1、物理冷备 2、专用备…

解决安卓12限制32个线程

Android 12及以上用户在使用Termux时,有时会显示[Process completed (signal 9) - press Enter],这是因为Android 12的PhantomProcesskiller限制了应用的子进程,最大允许应用有32个子进程。 这里以ColorOS 12.1为例(其他系统操作略…

前端vue入门(纯代码)14

内容创作不易,各位帅哥美女,求个小小的赞!!! 【15.给todoList案例添加编辑按钮】 本篇内容在TodoList案例的基础上添加个编辑按钮,要求: (1)点击编辑按钮后&#xff0c…

数据挖掘——宁县(区、市)农村居民人均可支配收入影响因子分析(论文)

《数据挖掘与分析》课程论文 题目:宁县(区、市)农村居民人均可支配收入影响因子分析 xx学院xx班:xxx 2022年6月 摘要:农村居民人均可支配收入可能被农作物产量、牲畜存栏、农作物播种数量等诸多因素影响。为此&#…

我的内网渗透-代理转发(1)

概念 网关 必须经过 用来进行路由转发的设备,网关的作用是让不同网段之间能够通信 代理 委托访问 无论代理后面挂了几台设备,都认为是从代理进行访问,对外只表现为代理一台。外部认为是与代理进行…