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

06. 管理Docker容器数据

目录

1、前言

2、Docker实现数据管理的方式

2.1、数据卷(Data Volumes)

2.2、数据卷容器(Data Volume Containers)

3、简单示例

3.1、数据卷示例

3.2、数据卷容器示例


1、前言

在生产环境中使用 Docker,一方面,需要对数据进行保存或者在多个容器之间进行数据共享;另一方面,在 Docker 的容器被删除后,并不会保留容器的状态信息。那么如何实现信息的持久化呢?这必然涉及容器的数据管理。

2、Docker实现数据管理的方式

在 Docker 容器中实现数据管理(或者说实现数据的持久化)主要有以下两种方式:

2.1、数据卷(Data Volumes)

数据卷本质上是一个挂载目录,类似使用 Linux的 mount 命令挂载的目录。数据卷可以供容器使用,并且可以在不同的容器之间共享和重用数据卷。对数据卷的修改会立即生效。数据卷与容器彼此独立,对数据卷的更新不会影响镜像。

即使容器被删除,数据卷默认也会一直存在,直到数据卷被删除为止。

在Docker 中可以使用-mount和-v 两种方式给容器挂载数据卷。

2.2、数据卷容器(Data Volume Containers)

数据卷容器是一种特殊的容器,用来维护数据卷。它可以在多个容器之间共享数据信息。利用数据卷容器可以很方便地完成数据迁移。

3、简单示例

3.1、数据卷示例

可以使用-mount或-v两种方式给容器挂在数据卷。

-mount和-v的区别在于,-mount如果宿主机目录不存在会直接报错,而-v会自动创建。

1)创建一个数据卷“myvolume”。

docker volume create myvolume

创建后,查看所有数据卷。

docker volume ls

也可以通过inspect命令查看数据卷详细信息。

docker inspect myvolume

2)启动一个容器,并使用数据卷。

这里使用Nginx镜像创建一个容器,名称为mynginx,端口映射为1234:80。

docker run -d -p 1234:80 --name=mynginx --mount type=volume,source=myvolume,target=/usr/share/nginx/html/ nginx

然而我这里却提示无法识别--mount,通过docker run --help并没有发现--mount命令。猜测跟docker版本有关系,我这里使用的是docker 1.13.0版本。网上找了一圈之后发现,需要docker-ce 75.06以上版本才可以。这里大家可以自行验证。

参数说明:

  1. --mount :指定在容器启动时挂载数据卷。
  2. type:指定数据卷挂载的方式。有以下几个参数:
    1. volume。普通数据卷,默认的type类型。其函数映射到主机“ar/lib/docker/volumes”目录下。
    2. bind。绑定数据卷。使用这种类型可以在挂载数据卷时将其映射到主机的指定目录下。
    3. tmpfs。临时数据卷,只将容器的目录挂载到宿主机的内存中。一般在实际环境中不会使用这种方式。
  3. source:指定宿主机上的目录或者数据卷。这里使用的是第(1)步所创建的数据卷myvolume。
  4. target:将容器中的“/usr/share/nginx/htm/”目录挂载到宿主机。

3)也可以使用-v参数进行挂载。

使用-v我们将宿主机/home/data目录挂载到容器内的/data/mydatavolume目录下。

# --privileged=true 不加这个,容器内使用ls会提示权限问题
docker run -it --privileged=true -v /home/data/:/data/mydatavolume centos /bin/bash

容器内:

宿主机:

可以看到目录已经成功挂载,且当你在宿主机修改的内容,会直接同步到容器内部。

-v命令格式为:

-v 宿主机目录:容器内部目录

3.2、数据卷容器示例

数据卷容器也是一个容器,专门用来提供数据卷供其他容器挂载。如果用户需要在多个容器之间共享一些持续更新的数据,则最简单的方式是使用数据卷容器。

1)创建数据卷容器。

创建一个数据卷容器 dbdata,并在其中创建一个数据卷挂载到“/dbdata”下:

docker run -it -v /dbdata --name dbdata centos

2)数据卷容器内生成一些文件。

echo hello world > a.txt

3)创建一个容器container1,并使用--volumes-from挂载dbdata容器的数据卷。

docker run -it --volumes-from dbdata --name=container1 centos

在容器container1中可以查看目录/dbdata,其中已经有了刚生成的a.txt:

4)同理可以继续建容器container2,并使用--volumes-from挂载dbdata容器的数据卷。

docker run -it --volumes-from dbdata --name=container2 centos

并创建b.txt:

5)在容器container1中也能看到该数据。

从结果可以看出两个容器container1和container2挂载了同一个数据卷,并且数据卷都在相同的、dbdata目录下。这样容器的任何一方在该目录下写入,其他容器也都可以看到。这样很方便的实现了不同容器之间的数据共享,并且利用这种方式很容易的实现容器数据的迁移。

相关文章:

06. 管理Docker容器数据

目录 1、前言 2、Docker实现数据管理的方式 2.1、数据卷(Data Volumes) 2.2、数据卷容器(Data Volume Containers) 3、简单示例 3.1、数据卷示例 3.2、数据卷容器示例 1、前言 在生产环境中使用 Docker,一方面…...

计算机视觉常用数据集介绍

1 MINIST MINIST 数据集应该算是CV里面最早流行的数据了,相当于CV领域的Hello World。该数据包含70000张手写数字图像,其中60000张用于train, 10000张用于test, 并且都有相应的label。图像的尺寸比较小, 为28x28。 数…...

Arcgis画等高线

目录 数据准备绘制等高线3D等高线今天我们将学习如何在ArcGIS中绘制等高线地图。等高线地图是地理信息系统中常见的数据表现形式,它通过等高线将地形起伏展现得一目了然,不仅美观,还能提供重要的地形信息。 数据准备 在开始之前,确保已经准备好了高程数据,它通常以栅格数…...

abp vnext4.3版本托管到iis同时支持http和https协议

在项目上本来一直使用的是http协议,后来因为安全和一些其他原因需要上https协议,如果发布项目之后想同时兼容http和https协议需要更改一下配置信息,下面一起看一下: 1.安装服务器证书 首先你需要先申请一张服务器证书,申请后将证…...

2023年全网电视盒子无线ADB修改桌面(无需ROOT)

前言 1.主要是为了解决电视盒子等安卓设备无法卸载或者停用原始桌面导致无法选用第三方桌面。 解决方案 1.首先自行下载我提供的网盘APK 2.点击打开中国移动云盘 3.不管你是通过U盘还是局域网共享能够让你的电视安装第三方应用,毕竟每个品牌的安装方法不尽相同…...

什么是Java中的Maven?

Java中的Maven,可以简单理解为“一个神奇的工具”,它可以自动帮你管理Java项目的依赖关系,让你不再为手动下载、配置各种库而烦恼。想象一下,你正在写一个Java项目,突然发现需要引入一个名为"第三方库"的模块…...

【C++】总结7

文章目录 函数指针C中类成员的访问权限和继承权限问题定义和声明的区别C中类的静态成员与普通成员的区别是什么?虚函数为什么不能重载为内联函数?对ifdef endif的理解如何在不使用额外空间的情况下,交换两个数? 函数指针 什么是函…...

【前端知识】React 基础巩固(四十二)——React Hooks的介绍

React 基础巩固(四十二)——React Hooks的介绍 一、为什么需要Hook? Hook 是 React 16.8 的新增特性,它可以让我们在不编写class的情况下使用state以及其他的React特性(比如生命周期)。 class组件 VS 函数式组件: class的优势…...

adb命令丨adb push命令大全_adb操控手机和指令

【ADB命令】adb push命令总结 adb push命令大全操控手机和指令 运行在 Android 设备上的adb后台进程 执行 adb shell ps | grep adbd ,可以找到该后台进程,windows 请使用 findstr 替代 grep [xuxu:~]$ adb shell ps | grep adbd root 23227 1 6672 8…...

【腾讯云 Cloud Studio 实战训练营】沉浸式体验编写一个博客系统

文章目录 前言项目中技术栈新建工作空间登录(注册)Cloud Studio 账号:进入 Cloud Studio 控制台:配置工作空间参数:确认并创建工作空间:项目搭建 配置nuxt 脚手架运行项目报错信息解决错误脚手架运行预览问题 开启博客代码配置lay…...

手机视频聊天分享

在人际互动的手机APP中,增加语音视频聊天功能是一个常见的需求。而现在,更进一步,在某些场景下,我们需要能将自己的手机屏幕分享给他人,或者是观看他人的手机屏幕。那么,这些常见的功能是如何实现的了&…...

神经网络小记-优化器

优化器是深度学习中用于优化神经网络模型的一类算法,其主要作用是根据模型的损失函数来调整模型的参数,使得模型能够更好地拟合训练数据,提高模型的性能和泛化能力。优化器在训练过程中通过不断更新模型的参数,使模型逐步接近最优…...

200+行代码写一个简易的Qt界面贪吃蛇

照例先演示一下: 一个简单的Qt贪吃蛇,所有的图片都是我自己画的(得意)。 大致的运行逻辑和之前那个200行写一个C小黑窗贪吃蛇差不多,因此在写这个项目的时候,大多情况是在想怎么通过Qt给展现出来。 背景图…...

redis中使用bloomfilter的白名单功能解决缓存穿透问题

一 缓存预热 1.1 缓存预热 将需要的数据提前缓存到缓存redis中,可以在服务启动时候,或者在使用前一天完成数据的同步等操作。保证后续能够正常使用。 1.2 缓存穿透 在redis中,查询redis缓存数据没有内容,接着查询mysql数据库&…...

Spring Boot 2.7.8以后mysql-connector-java与mysql-connector-j

错误信息 如果升级到Spring Boot 2.7.8&#xff0c;可以看到因为找不到mysql-connector-java依赖而出现错误。 配置&#xff1a; <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId>&l…...

03|「如何写好一个 Prompt」

前言 Prompt 文章目录 前言一、通用模板和范式1. 组成2. 要求1&#xff09;文字描述2&#xff09;注意标点符号 一、通用模板和范式 1. 组成 指令&#xff08;角色&#xff09; 生成主体 额外要求 指令&#xff1a;模型具体完成的任务描述。例如&#xff0c;翻译一段文字&…...

关于提示词 Prompt

Prompt原则 原则1 提供清晰明确的指示 注意在提示词中添加正确的分割符号 prompt """ 请给出下面文本的摘要&#xff1a; <你的文本> """可以指定输出格式&#xff0c;如&#xff1a;Json、HTML提示词中可以提供少量实例&#xff0c;…...

【Linux多线程】线程的互斥与同步(附抢票案例代码+讲解)

线程的互斥与同步 &#x1f4ab; 概念引入⭐️临界资源&#xff08;Critical Resource&#xff09;&#xff1a;&#x1f31f;临界区&#xff08;Critical Section&#xff09;&#xff1a;✨互斥&#xff08;Mutex&#xff09;&#xff1a; ⚡️结合代码看互斥☄️ 代码逻辑&a…...

ajax概述

目录 1.什么是ajax 2.ja原生ajax 3.jQuery框架的ajax 4.综合案例 1.什么是ajax Ajax 即"Asynchronous Javascript And XML"&#xff08;异步 JavaScript 和 XML&#xff09;&#xff0c;是指一种创建交互式网页应用的网页开发技术。Ajax 异步 JavaScript 和 XML&…...

小白带你学习linux的mysql服务(主从mysql服务和读写分离三十一)

目录 二、MySQL Replication优点&#xff1a; 三、MySQL复制类型 1、异步复制&#xff08;Asynchronous repication&#xff09; 2、全同步复制&#xff08;Fully synchronous replication&#xff09; 3、半同步复制&#xff08;Semisynchronous replication&#xff09;…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

comfyui 工作流中 图生视频 如何增加视频的长度到5秒

comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗&#xff1f; 在ComfyUI中实现图生视频并延长到5秒&#xff0c;需要结合多个扩展和技巧。以下是完整解决方案&#xff1a; 核心工作流配置&#xff08;24fps下5秒120帧&#xff09; #mermaid-svg-yP…...

React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构

React 实战项目&#xff1a;微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇&#xff01;在前 29 篇文章中&#xff0c;我们从 React 的基础概念逐步深入到高级技巧&#xff0c;涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...

Linux安全加固:从攻防视角构建系统免疫

Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...