Docker学习笔记16

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

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

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

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

数据卷:

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

数据卷特性:

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

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

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

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

1、创建数据卷:

使用命令:

docker volume create -d local test
[root@docker-server ~]# docker volume --helpUsage:  docker volume COMMANDManage volumesCommands:create      Create a volumeinspect     Display detailed information on one or more volumesls          List volumesprune       Remove all unused local volumesrm          Remove one or more volumesRun '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.hqwc.cn/news/13752.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32实战项目—楼宇人员计数系统

本文项目比较简单,目的是介绍一下红外对管的使用,程序设计也比较简单。因此,博主并没有将程序工程上传资源,如果有需要的话可以私信。 文章目录 一、任务要求二、实现方法2.1 红外对管简介2.2 进出人员检测 三、程序设计3.1 红外对…

Jenkins基础介绍以及docker安装Jenkins

Jenkins基础介绍以及docker安装Jenkins 什么是Jenkins? Jenkins是一个可扩展的持续集成引擎 持续集成就是通常说的CI(Continues Integration) 每次集成都通过自动化的构建(包括编译,发布,自动化测试&am…

基于simulink仿真车道偏离警告系统(附源码)

一、前言 此示例演示如何在视频序列中检测和跟踪道路车道标记,并在驾驶员穿过车道时通知驾驶员。该示例说明了如何使用霍夫变换、霍夫线和卡尔曼滤波器模块来创建线检测和跟踪算法。该示例使用以下步骤实现此算法:1) 检测当前视频帧中的车道…

Zabbix 6.0 介绍及部署

目录 一、Zabbix 6.0 介绍1. 简介2. **利用一个优秀的监控软件带来的好处**3. **zabbix 6.0 的功能组件**4.zabbix 监控原理 二、Zabbix 6.0 部署 一、Zabbix 6.0 介绍 1. 简介 Zabbix 是由 Alexei Vladishev 创建,目前是由 Zabbix SIA 在持续开发和提供支持。zab…

python 实现简易的学员管理系统

文章目录 前言基本思路需求实现1.实现菜单的功能2.提示用户输入需要进行的操作,并执行相关操作3.具体函数功能的实现增加学员信息显示所有学员信息删除学员信息修改学员信息查询学员信息 整体代码展示 前言 前面我们已经学习了 python 的输入输出、条件语句、循环、…

Redis - 一篇讲解根据 Key 前缀统计分析内存占用

问题描述 今天遇到一个 Redis 内存打挂了的问题,想看看哪个前缀 Key 占用内存比较大?! 原因分析 我们都知道如果直接用 Keys 参数去做统计很危险,而且也只能统计数量,当然也可以排序去前几名的占用内存 Key 对应的大…

逆转乾坤,反转字符串

本篇博客会讲解力扣“344. 反转字符串”的解题思路,这是题目链接。 这是一道经典题目了。解题思路是:双下标,left指向最左边的字符,right指向最右边的字符,交换2个字符,left向右挪动一格,right向…

细谈容器化技术实现原理--以Docker为例

目录 一、Docker解决了什么 二、容器的发展过程 三、容器基础 3.1. 容器实现的原理: ⚠️原理详解: 3.1.1. Namespace 3.1.2. Cgroups 3.1.3. chroot 四、Volume 4.1. Docker是如何做到把一个宿主机上的目录或者文件,挂载到容器里面…

StarRocks--被 Databricks CEO 提及的数据库

Databricks 介绍 Databricks是一家美国的大数据独角兽公司,由 Apache Spark 的创建者所创立。Databricks 开源了 Delta Lake--基于 Apache Spark 的下一代数据湖存储引擎。Delta Lake 是目前市面上主流的数据湖存储引擎之一,与 Apache Hudi 和 Apache Ic…

MySQL入门必备:Linux中部署MySQL环境的四种方式详解

目录 一、仓库安装 二、本地安装 三、Docker中安装 四、源码安装 一、仓库安装 首先需要下载mysql软件包: 1、进入MySQL官网 2、进入MySQL社区版下载 3、使用yum方式下载MySQL 4、下载对应版本的软件包 5、这里可以不登录直接下载软件包 6、复制下载链接 7、然…

122.将实战网页部署到Netlify

● 本章我们将网站部署到Netlify ● 首先先点击右上角注册一个账号 ● 注册完成之后,点击sites,将我们的网站文件夹拖入 ● 上传成功 ● 之后就可以正常访问啦 ● 我们也可以修改我们的站点名称,让他更加好记

综合评价算法 | Matlab实现基于CRITIC法的综合评价算法

文章目录 效果一览文章概述研究内容源码设计参考资料效果一览 文章概述 综合评价算法 | Matlab实现基于CRITIC法的综合评价算法 研究内容 CRITIC法是一种比熵权法和标准离差法更好的客观赋权法。它是基于评价指标的对比强度和指标之间的冲突性来综合衡量指标的客观权重。考虑指…