Docker学习笔记16

news2024/12/23 20:44:21

在生产环境中使用Docker,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享。

容器管理数据有两种方式:

1)数据卷:容器内数据直接映射到本地主机环境;

2)数据卷容器:使用特定容器维护数据卷;

数据卷:

数据卷的概念:数据卷是一个可供容器使用的特殊目录,它将主机操作系统的目录直接映射进容器。

数据卷特性:

1)数据卷可以在容器之间共享和重用,容器间传递数据将变得高效和方便;

2)对数据卷内的数据的修改立马生效,无论是容器内操作还是本地操作;

3)对数据卷的更新不会影响镜像解耦开应用和数据;

4)卷会一直存在,直到没有容器使用,可以安全第卸载它;

1、创建数据卷:

使用命令:

docker volume create -d local test
[root@docker-server ~]# docker volume --help

Usage:  docker volume COMMAND

Manage volumes

Commands:
  create      Create a volume
  inspect     Display detailed information on one or more volumes
  ls          List volumes
  prune       Remove all unused local volumes
  rm          Remove one or more volumes

Run 'docker volume COMMAND --help' for more information on a command.
[root@docker-server ~]#

这个时候查看/var/lib/docker/volumes路径下,会发现所创建的数据卷位置。

2、绑定数据卷:

绑定数据卷:在创建容器时将主机本地的任意路径挂载到容器里作为数据卷,这种形式创建的数据卷称为绑定数据卷。

在docker run命令的时候,可以使用-mount选项来使用数据卷。

-mount选项支持三种类型的数据卷:

volume:普通数据卷;

bind:绑定数据卷,映射到主机指定路径下;

tmpfs:临时数据卷,只存在于内存中;

docker run -d -P --name web --mount type=bind source=/webapp,destination=/opt/webapp training/webapp python app.py

# 等同于命令
docker run -d -P --name web -v /webapp:/opt/webapp training/webapp python app.py

这个功能在进行应用测试的时候十分方便,比如用户可以放置一些程序或数据到本地目录中实时进行更新,然后在容器内运行和使用。

注意的是:本地目录的路径必须是绝对路径,容器内路径可以为相对路径,如果目录不存在,Docker就会自动创建。

数据卷容器:

这个概念是在培训视频中没有讲解的内容。

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

案例:

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

docker run -it -v /dbdata --name dbdata ubuntu
[root@docker-server ~]# docker run -it -v /dbdata --name dbdata ubuntu
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
6b851dcae6ca: Pull complete
Digest: sha256:6120be6a2b7ce665d0cbddc3ce6eae60fe94637c6a66985312d1f02f63cc0bcd
Status: Downloaded newer image for ubuntu:latest
root@d60e821f8f19:/# ls
bin   dbdata  etc   lib    lib64   media  opt   root  sbin  sys  usr
boot  dev     home  lib32  libx32  mnt    proc  run   srv   tmp  var
root@d60e821f8f19:/# [root@docker-server ~]#
[root@docker-server ~]#
[root@docker-server ~]# docker run -it --volumes-from dbdata --name d1 ubuntu
root@d84dc2ad2762:/# [root@docker-server ~]#
[root@docker-server ~]# docker run -it --volumes-from dbdata --name d2 ubuntu
root@68a25c215f35:/# [root@docker-server ~]#

在dbdata容器中创建一个test文件,然后到d1和d2容器中检查/dbdata中,可以看到有test文件。

那么:

1)可以多次使用--volume-from参数来从多个容器挂载多个数据卷;

2)还可以从其他已经挂载了容器卷的容器来挂载数据卷。

docker run -d --name db3 --volumes-from d1 training/postgres

这个例子就是从其他已经挂载了容器卷的容器来挂载数据卷。

如果删除了挂载的容器,数据卷不会被自动删除。

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

服务器远程管理工具Xshell安装及使用,传输文件工具安装及使用

两个软件 Xshell 双击输入用户名和密码 也可以通过密钥的方式 怎么生成密钥还没做过 Xftp 一边主机一边服务器,相互拖动就行了

【C#】并行编程实战:实现数据并行(3)

本章继续学习实现数据并行,本文主要介绍取消循环。 本教程对应学习工程:魔术师Dix / HandsOnParallelProgramming GitCode 4、取消循环 在顺序循环中,可以使用 break 来跳出循环,而在并行循环的情况下,由于他…

Unity协程

unity提供了一种类似“多段代码并行执行”的功能,即协程。 我们在定义一个协程的时候,需要遵循类似这样的语法 IEnumerator(枚举器接口) namespace System.Collections {public interface IEnumerator{object Current { get; }/…

卷积神经网络--猫狗系列【VGG16】

数据集:【文末】 ​ 数据集预处理 定义读取数据辅助类(继承torch.utils.data.Dataset) import osimport PILimport torchimport torchvisionimport matplotlib.pyplot as pltimport torch.utils.dataimport PIL.Image # 数据集路径train_p…

哈希桶的增删查改简单实现

个人简单笔记。 目录 闭散列 开散列 插入 删除 查找 改变 什么是哈希桶呢?这是一个解决哈希数据结构的一种解决方法,在STL中的unorder_map与unorder_set的底层结构就是使用它来实现的。 闭散列 首先我们知道,哈希映射表是依据数组下…

CSS画特殊边框

例如如图所示边框 .card-middle {width: 672px;height: 486px;border: 1px solid #5fadec;border-radius: 5px;position: relative; }.card-middle::before {content: ;position: absolute;top: -4px;left: -4px;width: 680px;height: 448px;border: 25px solid transparent;b…

【Python】PIL.Image转QPixmap后运行异常的个人解决方法

问题场景: PIL.Image图片,直接调用PIL.Image.toqpixmap()转成QPixmap后,不会立即报错,   但后续使用该QPixmap时(包括但不仅限于使用QLabel.setPximap()、QPixmap.save())将立即出现异常 不知道是我关键词不对,还是只…

【数据结构与算法】文学语言助手(C\C++)

实践要求 1. 问题描述 文学研究人员需要统计某篇英文小说中某些形容词的出现次数和位置。试写一个实现这一目标的文字统计系统,称为"文学研究助手"。 2. 基本要求 英文小说存于文本文件中。待统计的词汇集合要一次输入完毕,即统计工作必需在…

linux常用命令介绍 06 篇——Linux查看目录层级结构以及创建不同情况的层级目录

linux常用命令介绍 06 篇——Linux查看目录层级结构以及创建不同情况的层级目录 1. 前言1.1 Linux常用命令其他篇1.2 关于tree简介 2. 安装并使用 tree2.1 安装tree2.1.1 方式1:yum安装2.1.2 方式2:下载安装包安装2.1.2.1 下载安装包2.1.2.2 解压安装2.1…

transformer入坑指南

*免责声明: 1\此方法仅提供参考 2\搬了其他博主的操作方法,以贴上路径. 3* 场景一: Attention is all you need 场景二: VIT 场景三: Swin v1 场景四: Swin v2 场景五: SETR 场景六: TransUNet 场景七: SegFormer 场景八: PVT 场景九: Segmeter … 场景一:Attention…

Spring Boot 中的 Spring Cloud Ribbon:什么是它,原理及如何使用

Spring Boot 中的 Spring Cloud Ribbon:什么是它,原理及如何使用 在分布式系统中,服务之间的通信是非常重要的。在大型的分布式系统中,有许多服务需要相互通信,而这些服务可能会部署在多个服务器上。为了实现服务之间…

超详细Redis入门教程——Redis分布式系统

前言 本文小新为大家带来 Redis分布式系统 相关知识,具体内容包括数据分区算法(包括:顺序分区,哈希分区),系统搭建与运行(包括:系统搭建,系统启动与关闭)&…

把 OpenGrok search 上的Android 开源代码扒下来

1、下载工具 wget (window10版本)以及配置环境变量 工具我会上传到本篇博客的“代码包”区域,可以自行下载! 当然如果可以访问如下链接的话,也可以在这个地址自行下载一个比较新的版本即可!GNU Wget 1.21.…

Web服务器群集:LVS+Keepalived高可用群集

目录 一、理论 1.Keepalived 2.VRRP协议(虚拟路由冗余协议) 3.部署LVSKeepalived 高可用群集 二、实验 1.LVSKeepalived 高可用群集 三、问题 1.备服务器网卡启动报错 四、总结 一、理论 1.Keepalived (1)简介 Keepal…

【动态规划算法】-第一题:1137.第N个斐波那契数

💖作者:小树苗渴望变成参天大树 🎉作者宣言:认真写好每一篇博客 🎊作者gitee:gitee 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧! 文章目录 前言 前言 各位友友们&#xff0c…

element之el-table合并列功能

目标效果如下&#xff1a; 实现代码如下&#xff1a; html部分&#xff1a; <!--定义表格组件,用组件自带的span-method属性定义合并列的方法--> <el-table :data"tableData" :span-method"spanRow"><el-table-column prop"RegionNa…

在proteus中仿真arduino驱动点阵屏matrix-led

我们都知道&#xff0c;如果我们仅仅在某个时间段点亮一个数码管是没有任何困难的&#xff0c;但如果我们点亮多个数码管就会出现问题&#xff0c;因为多个数码管都使用着同样的端口来控制数码管的各个段的亮灭。所以&#xff0c;就会用上一个很重要的方法&#xff0c;对&#…

使用javaScript脚本生成openFoam网格

简介 OpenFoam的首选网格生成器是blockMesh。blockMesh可以根据blockMeshDict这个字典中的信息生成openFoam网格。但是有时候需要修改网格&#xff0c;而网格中的几何点之间又存在约束关系&#xff0c;如果手动修改blockMeshDict那么工作量将是巨大的&#xff0c;所以有必要使…

有没有免费提取音频的软件,分享几个给大家!

在日常生活中&#xff0c;我们经常遇到需要从视频中提取音频的情况&#xff0c;无论是为了制作音频片段、录制语音笔记还是进行后期编辑。本文将介绍三种免费提取音频的方法&#xff0c;分别是记灵在线工具、PR&#xff08;Adobe Premiere Pro&#xff09;和剪映。通过这些方法…

【Vue3】学习笔记-自定义hook函数

概念 什么是hook? 本质是一个函数&#xff0c;把setup函数中使用的Composition API进行了封装。 类似于vue2.x中的mixin。(但是mixins会组件的配置项覆盖。vue3使用了自定义hooks替代mixnins&#xff0c;hooks本质上是函数&#xff0c;引入调用。) 自定义hook的优势: 复用代…