Docker数据持久化

2023-11-13

-v 持久化 三种

默认的			volumes			占用一部分宿主机的资源			最常用的方式
bind mounts			不同的数据结构不通不可移植			不能写在dockerfile中			比较常用
tmpfs			挂载到内存当中			一般都不会用
docker run -itd -v /usr/share/nginx/html nginx         默认
	/var/lib/docker/volumes/xxxxxxxxxxxxxx/_data

docker run -itd -v /opt:/usr/sharc/nginx/html nginx			bind mounts
	/opt

在这里插入图片描述

容器卷

容器卷			docker vloume create 名字		说白了它是一个容器但是它提供的是一个卷的功能 这个比bind mounts好很多
docker run -itd -v nginx-data:/usr/share/nginx/html nginx		容器卷
	/var/lib/docker/volumes/nginx-data/_data
docker volume create nginx-data		//创建一个自定义容器卷
docker volume ls	//查看所有容器卷
docker volume inspect nginx-data	//查看指定容器卷详情信息

创建使用指定卷的容器

docker run -itd --name=nginx -p 8000:80 -v nginx-data:/usr/share/nginx/html nginx
选项-v表示挂载数据卷,这里使用自定义数据卷nginx-data,并且将数据卷挂载到/usr/share/nginx/html
默认会创建匿名数据卷进行映射和挂载。
可查看宿主机文件系统的数据/var/lib/docker/volumes/nginx-data/_data

Volume帮我们做了类似于一个软连接的功能。在容器里边的改动,我们可以再宿主机里感知,而在宿主局里面的改动,在容器里边可以感知到。
如果我们手动stop并且remove当前nginx容器,我们会发现容器卷里面的文件还在,并没有随着容器被删除掉。
所以在数据卷里边的东西是可以持久化的。如果下次还需要创建一个nginx容器,那么数据复用当前数据卷里面文件的。
此外,我们还可以启动多个nginx容器实例,共享同一个数据卷。数据卷的复用性和扩展性较强。
docker volume rm nginx-data			//清理卷(无用的)

Bind Mounts的基本使用

指定了将宿主机上的/wwwroot目录(如果没有会自动创建)挂载到/usr/share/nginx/html(这个目录是yum安装nginx的默认网页目录)。

docker挂载的默认权限是读写(rw),用户可以通过ro指定为只读

docker run -d -it --name=nginx -p 800:80 -v /wwwroot:/usr/share/nginx/html:ro nginx
与volumes不同,bind mounts的方式会隐藏被挂载目录里面的内容(如果非空的话),这里是/usr/share/nginx/html目录下的内容被隐藏掉了,因此我们看不到。

但是,我们可以将宿主机上的文件随时挂载到容器中

echo "test html" > /wwwroot/index.html
root@bfad2ded6e7a:/# ls /usr/share/nginx/html/
index.html

验证绑定

docker inspect nginx
"HostConfig": {
            "Binds": [
                "/wwwroot:/usr/share/nginx/html:ro"
            ],

清理

docker stop nginx
nginx
docker rm nginx
nginx
ls /wwwroot/
index.html
同volumes一样,当我们清理掉容器之后,挂在目录里面的文件仍然还在,不会随着容器的结束而消失,从而实现数据持久化。

数据卷容器

用户需要在容器之间共享一些持续性更新的数据时,可以使用数据卷容器。数据容器也是一个普通的容器。里边有设置好的数据卷,专门提供给他容器挂载使用。通过--volumes-from数据卷容器名来实现。
docker run -it -v /dbdata:/dbdata --name=dbdata centos /bin/bash		//创建数据容器卷

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

docker run -it --volumes-from dbdata --name test1 centos /bin/bash
ls
bin  dbdata  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
touch dbdata/flaglinux		//在test1容器的/dbdata目录创建测试文件

进入test2容器验证结果

docker run -it --volumes-from dbdata --name test2 centos /bin/bash
ls
bin  dbdata  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
ls dbdata/
flaglinux		//测试文件还在
可以多次使用--volume-from参数从多个容器挂载多个目录。也可以从其他已经挂载了
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker数据持久化 的相关文章

  • RuntimeError:使用 docker 关闭连接后无法重用套接字

    我正在关注本教程 https github com getamis eth indexer blob master README md fbclid IwAR3g3SAjJ9ik hHCFkol2k8YXo0GvBL15oSNC hIU38
  • Docker 上的 MySQL?

    我是 Docker 新手 仍在探索中 我遇到了这个问题 可能看起来很愚蠢 但我真的被困住了 所以我有一个使用 MySQL 服务器的 Spring boot 应用程序 我想在容器上运行我的应用程序 我设法 运行一个没有 MySQL 的应用程序
  • VS2017 构建失败 - DOCKER_REGISTRY

    我正在开始使用 Docker 并熟悉 NET Core 和 Visual Studio 2017 我创建了一个名为 WebApplicationCore21 的新 Web 应用程序 Razor Pages 并启用了 Docker 支持 并立
  • 根据情况启动docker容器

    Problem 我有一个包含 6 个服务的 docker compose yml 当我执行 docker compose up 时 所有 6 个容器都会启动 但我需要 2 个容器来最初开始工作 并根据条件休息 4 个容器 描述 组合中的 6
  • 如何使用yarn工作空间从monorepo中的nodejs项目构建docker镜像

    我们目前正在与我们的团队一起研究网站的 CI CD 我们最近还适应了 monorepo 结构 因为这使我们的依赖关系和概述变得更加容易 目前测试等已为 CI 做好准备 但我现在正在部署 我想创建所需包的 docker 镜像 我考虑过的事情
  • 将容器推送到 Azure 容器注册表时资源访问被拒绝

    使用 Docker Compose 将容器推送到私有 Azure 容器注册表时 Azure DevOps 管道返回以下错误 正在推送 容器 注册表 应用程序 最新 推送引用存储库 docker io registry container 被
  • Rancher 外部子域

    我需要为 docker 容器中的应用程序设置子域 而不是在内部牧场主网络中 而是供公共使用 我已将域委托给牧场主服务器 并且目录中几乎所有堆栈都有主机属性 但它不起作用 我想我需要使用一些 rancher dns 委托域或设置 nginx
  • 有没有办法查看 Docker for Windows 上的容器磁盘使用情况?

    我很好奇除了作为容器映像一部分的层之外 是否还有一种方法可以查看正在运行的 Windows 容器使用了多少磁盘空间 基本上 容器自创建以来 增长 了多少 在 Linux 或在 HyperV 中运行的 Linux 容器 中 这将是docker
  • Docker:入口点的覆盖涉及CMD规范?

    这是我纯粹好奇的问题 我必须个性化 Docker 映像 特别是这是我的 dockerfile 的摘录 ARG DEFAULT PHP VERSION FROM php DEFAULT PHP VERSION DEFAULT PHP VERS
  • 如何使用 TensorFlow 设置 Udacity 深度学习课程的学习环境 (Windows)

    相信很多对深度学习感兴趣的人都听说过这门课程 https www udacity com course deep learning ud730 https www udacity com course deep learning ud730
  • 可以从curl访问docker服务,但不能从postman/chrome访问docker服务

    我正在做 docker 入门指南 https docs docker com get started part3 recap and cheat sheet optional https docs docker com get starte
  • 使用 HornetQ (JBoss) 在 docker 容器上公开的 JMS 所需的端口

    我正在使用 Docker 将 JMS 服务器容器链接到另一个 JMS 客户端容器 但是当我在docker容器中运行服务器时 客户端无法正确连接到服务器 我在docker上暴露了端口443 JMS还有其他使用的端口吗 我可以成功创建目标 但不
  • Docker 与 nginx 组合不断显示欢迎页面

    我是新来的docker并尝试使用最简单的 docker compose yml 显示一个 hello world 页面 并在此基础上构建最终完整的LEMP堆栈它将与我的服务器具有相同的配置 然而大多数教程已经过时 并且有很多使用方法dock
  • 稍后如何附加到正在运行的 Docker 容器?

    我想简单地启动一个 docker 容器来执行一些 java 代码 最终启动 JBoss 这工作正常 只是我不知道如何再次连接到容器并返回到 bash 提示符 这就是我启动容器的方式 docker run i t p 80 80 v tmp
  • 使用“容器ip”连接到docker容器

    我在 mac 上运行 docker 我想使用 docker 容器的 ip 不是虚拟机的 ip 连接到它 原因是 Spark 驱动程序将自身注册到容器 IP 172 17 0 2 并且从 mac 运行的客户端尝试连接到该地址 有没有办法从 m
  • Azure Function Docker 无法使用 http 触发器

    最近 我使用具有 HttpTrigger 的 Azure Function 节点 创建了一个 docker 映像 这是默认生成的基本 HttpTrigger 我正在 Macbook Pro MoJave 上开发此程序 并且安装了以下工具 N
  • Visual Studio 2015 Docker 集成不会附加调试

    我使用 VS 2015 创建了一个 Default net Core RC2 MVC 应用程序 我添加了 Docker 支持 以便我可以在 docker 中运行和调试它 当我运行该项目时 它会构建 docker 容器并启动它 运行命令 do
  • yum update / apk update / apt-get update 在代理后面不起作用

    我使用代理 无法构建 Docker 映像 我尝试过FROM ubuntu FROM centos and FROM alpine but apt get update yum update apk update failed 我的主机操作系
  • 如何访问docker镜像?

    我试图在不运行的情况下访问 docker 映像 我只想知道它包含什么内容以进行验证 我无法 ssh 进入容器 因为它会在一秒钟内结束 所以我需要探索图像而不是容器 或者 在完成之前是否可以访问容器 明白了 命令如下 docker run i
  • 如何在 Mac 上升级 Docker? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我尝试了 docker machine升级 并做了一些工作 但我似乎没有最新的 CLI 如果我执行 docker 版本 我会得到 Clie

随机推荐

  • 调用服务工具类-HttpsUtil

    import java io BufferedReader import java io IOException import java io InputStream import java io InputStreamReader imp
  • 星际文件存储IPFS是如何颠覆云存储的?

    一句话概括 IPFS The InterPlanetary File System 星际文件存储系统是一种点到点的分布式文件系统 它连接的计算设备都拥有相同的文件管理模式 从某种意义上来说这个概念跟Web的最初理念很类似 但是实际上IPFS
  • gazebo通过sdf搭建仿真环境和机器人Husky

    具体格式要求可参考 http sdformat org spec ver 1 6 elem sdf
  • YCbCr色彩空间

    一 RGB 三原色光模式 RGB color model 表示方式 R red 红色 G green 绿色 B blue 蓝色 使用场景 摄影 彩色电视 彩色显示屏 二 HSV HSL HSV HSL 是一种将 RGB 色彩模型中的点在圆柱
  • s5p4418的uboot网络无法使用问题解决

    一 前言 s5p4418 是一个三星的基于ARM的 cortex A9的四核处理器 这个 处理器目前常用的两个系统层固件分别是 uboot2014 linux3 4 39 和 uboot2016 linux4 4 172 两个版本 本次针对
  • Bootstrap弹出模态框的运用

    作者 张铭标 撰写时间 2019年 6月3日 Bootstrap模态框主要分为三部分 modal header modal body modal footer 在使用之前需要引入一些插件 bootstrap bundle js jquery
  • 如何添加虚拟PDF打印机

    正常情况 在安装了pdfFactory Pro虚拟打印机后 打开 打印弹窗 打印机名称 下拉框 便可找到 pdfFactory Pro 但因为某种原因此处未出现该设备 怎么办呢 该如何添加虚拟PDF打印机呢 下面便来看看如何操作吧 图1 打
  • mysql死锁

    https www cnblogs com tartis p 9366574 html 线上某服务时不时报出如下异常 大约一天二十多次 Deadlock found when trying to get lock Oh My God 是死锁
  • (带权有向图)邻接矩阵表示图代码实现

    package dn1124 author sj E mail 961784535 qq com version 创建时间 2017 11 26 下午10 16 38 类说明 带权有向图 邻接矩阵表示图代码实现 public class G
  • 将从数据库获取到的数据拼接成json格式

    有时候需要将从数据库获取的数据封装成json格式 可以使用如下方式拼接 代码 public void getinfo List
  • 用单片机蜂鸣器播放音乐

    这是怎么一回事 这算是一篇水文 是的 我又来水了 话说回来 虽然暑假开始已经将近两周了 但是我们并没有回家 为什么呢 你可知道这世上有一物唤作 小学期 吗 每年暑假 我们学院大二的学生都会被拉到工训中心愉悦地学习课程 其名为 焊板子 学会了
  • mybatis的分批次插入

    最近在写mybati的分批插入 一直报错 一直在纠结自己的循环插入是不是有问题 但是数据量少的时候可以正常插入 但是插入数据量大的时候就会报错 后来查询是mysql限制插入的sqlMysql 对语句的长度有限制 默认是 4M Mybatis
  • php 新闻hot图标,div+css实现图片右上角hot、new等图标样式

    方法 用DIV CSS实现 CSS部分修改 hot play position relative hot play ul float left hot play li float left position relative width 9
  • vscode——debugger

    提示 本文适用于vscode编译java代码调试初学者 文章目录 debugger图标介绍 左侧工具栏 调试代码 debugger图标介绍 在进行调试之前我们应先在代码前打断点 调试程序时 代码就会运行至断点位置然后停下 断点即为行数前小红
  • 一问解读OpenCV的计算机视觉中视频处理

    微信公众号 小白图像与视觉 关于技术 关注yysilence00 有问题或建议 请公众号留言 了解OpenCV的计算机视觉 OpenCV Python教程 在本OpenCV Python教程中 我们将介绍在Python中使用OpenCV进行
  • Linux 内核 MIPI LCD 驱动移植

    实验原理 DSI Display Serial Interface 是有 MIPI联盟定义的一组通信协议的一部分 MIPI DSI主机控制器是一个数字核心 实现 MIPI DSI 规范中定义的所有协议功能 它提供了系统和MIPI D PHY
  • Flutter Text 下面有两个默认的下划线,和设置划掉效果

    Text的decoration默认是TextDecoration none 不知道什么原因 有时候定义的Text下面会出现两个下划线 如下图 此时要去掉下面的下划线只需要在style下面的TextStyle增加属性decoration Te
  • CPU : 什么是双核处理器

    CPU 什么是双核处理器 双核处理器 Dual Core Processor 双核处理器是指在一个处理器上集成两个运算核心 从而提高计算能力 双核 的概念最早是由IBM HP Sun等支持RISC架构的高端服务器厂商提出的 主要运用于服务器
  • JavaDoc注释的使用跟导出JavaDoc文档

    1 Javadoc是什么 JavaDoc是Sun公司提供一种从程序源代码中抽取类 方法 成员等注释形成一个和源代码配套的API帮助文档技术 但是需要在编写程序时以一套特定的标签作注释 在程序编写完成 后 通过Javadoc就可以同时形成程序
  • Docker数据持久化

    v 持久化 三种 默认的 volumes 占用一部分宿主机的资源 最常用的方式 bind mounts 不同的数据结构不通不可移植 不能写在dockerfile中 比较常用 tmpfs 挂载到内存当中 一般都不会用 docker run i