玩转Docker(六):数据挂载与共享

Docker-数据卷、网络、dockerfile、挂载 查看所有的docker网络docker网络模式bridge:桥接模式none:不配置网络host:与宿主机共享网络container:容器网络连通创建网络--driver bridge #桥接模式创建网络--subnet 192.168.0.0/16 #网络号--gateway 192.168.0.1 #网关mynet #网络名使用自己创建的网络,创建容器,同网段之间的连通查看自定义网络下的容器自定义网络是可以实现容器之间,使用容器名互通。不同的集群使用不同的网络,保证网络的健康。跨网段互通。 阅读详情

〇、Docker的两种存放数据的资源

1.Storage Driver

存储驱动(storage driver)是Docker中负责管理容器镜像和容器数据的组件。它负责将容器的文件系统、元数据和存储卷等数据存储到宿主机的文件系统中。Docker支持多种存储驱动,每种存储驱动都有自己的特点和适用场景。

常见的存储驱动包括:

  1. overlay2:这是Docker默认的存储驱动,它支持联合文件系统,并提供了快速的容器启动和高效的存储利用率。

  2. aufs:这是早期的存储驱动,提供了类似overlay2的功能,但在一些方面性能不如overlay2。

  3. btrfs:这是基于Btrfs文件系统的存储驱动,提供了快速的容器启动和快照功能。

  4. zfs:这是基于ZFS文件系统的存储驱动,提供了高级的数据管理和快照功能。

2.Data Volume

数据卷(Data Volume)是Docker中用于持久化存储数据的机制。它允许容器将数据存储到宿主机的文件系统中,并且可以在容器之间共享数据。数据卷可以用于存储应用程序的配置文件、日志、数据库文件等持久化数据。

数据卷有以下特点:

  1. 持久化存储:数据卷中的数据在容器删除后仍然保留在宿主机上,因此可以实现数据的持久化存储。

  2. 容器间共享:多个容器可以共享同一个数据卷,从而实现容器之间的数据共享。

  3. 宿主机文件系统:数据卷实际上是宿主机文件系统中的一个目录,因此可以利用宿主机文件系统的特性来管理数据。

  4. 数据卷驱动:Docker支持多种数据卷驱动,用户可以根据需求选择合适的数据卷驱动来管理数据卷。

综上所述,存储驱动和数据卷是Docker中重要的存储相关概念。存储驱动负责管理容器镜像和容器数据的存储,而数据卷则提供了持久化存储和容器间数据共享的机制。这些概念对于理解Docker中的数据管理和持久化存储非常重要。

3.使用场景

在Docker中,存储通常用于以下情况:

  1. 持久化数据:当您需要容器中的数据在容器重启或重新部署后仍然保持不变时,您可以使用Docker的存储功能。这包括数据库文件、日志文件、配置文件等需要持久保存的数据。

  2. 数据共享:如果多个容器需要访问相同的数据,您可以使用Docker的存储功能来创建共享的数据卷,从而使得多个容器可以共享相同的数据。

  3. 数据备份:通过Docker的存储功能,您可以轻松地对容器中的数据进行备份,以防止数据丢失或损坏。

  4. 数据管理:使用Docker的存储功能可以更好地管理容器中的数据,包括数据的版本控制、快照、迁移等操作。

存储驱动和数据卷是Docker中的两种不同的存储策略,它们在使用场景上有一些区别:

  • 存储驱动的使用场景:
  1. 存储驱动主要用于管理容器镜像和容器的文件系统,它负责将容器的文件系统、元数据和存储卷等数据存储到宿主机的文件系统中。因此,存储驱动的主要使用场景是管理容器的文件系统和镜像的存储,以及提供容器的启动和运行所需的文件系统支持。

  2. 存储驱动的选择通常取决于性能、稳定性和特定的文件系统需求。不同的存储驱动具有不同的特点和适用场景,例如overlay2适合快速容器启动和高效的存储利用率,而zfs提供了高级的数据管理和快照功能。

  • 数据卷的使用场景:
  1. 数据卷主要用于容器中持久化存储数据,它允许容器将数据存储到宿主机的文件系统中,并且可以在容器之间共享数据。因此,数据卷的主要使用场景是实现容器中的持久化存储和容器间的数据共享。

  2. 数据卷可以用于存储应用程序的配置文件、日志、数据库文件等持久化数据,以及实现容器间的数据共享。它提供了一种灵活的机制,使得容器可以在不同的环境中共享和管理数据。

综上所述,存储驱动和数据卷在使用场景上有一些区别。存储驱动主要用于管理容器的文件系统和镜像的存储,而数据卷主要用于实现容器中的持久化存储和容器间的数据共享。根据具体的需求和场景,用户可以选择合适的存储策略来管理容器的存储和数据。

一、使用Data Volume

1.-v <host_path>:<container_path>

在Docker中,-v参数用于将宿主机的目录或文件挂载到容器中,从而实现宿主机和容器之间的文件共享。这个参数的基本语法是-v <host_path>:<container_path>,其中<host_path>是宿主机上的路径,<container_path>是容器中的路径。

例如,如果你想将宿主机上的/opt/data目录挂载到容器中的/data目录,可以使用以下命令:

docker run -v /opt/data:/data your_image

这将会把宿主机上的/opt/data目录挂载到运行的容器中的/data目录。这样,容器中对/data目录的操作实际上会直接影响到宿主机上的/opt/data目录,实现了宿主机和容器之间的文件共享。

  • 指定权限:

默认情况下,-v挂载到容器中的目录在容器中是可读可写,可指定为只读。

docker run -v /opt/data:/data your_image:ro
  • 挂载单个文件:

上面演示的都是挂载目录,其实还可以挂载单个文件。

docker run -v /opt/data/file_source:/data your_image/file_container

使用单一文件有一点要注意:host中的源文件必须要存在,不然会当作一个新目录bind mount给容器。

2.-v <container_path>挂载匿名卷

在Docker中,如果使用-v参数时不指定源 (可移植性强),即只指定目标路径,那么Docker会在宿主机的文件系统中创建一个匿名卷,并将其挂载到容器中指定的路径上。这样做的效果是在容器中创建一个匿名卷,用于存储容器内产生的数据。

例如,如果使用以下命令:

docker run -v /data ...

这将会在宿主机的文件系统中创建一个匿名卷,并将其挂载到容器中的/data路径上。这个匿名卷的具体路径会由Docker自动生成,并且通常是在/var/lib/docker/volumes/目录下。

  • 下面来演示一下:

启动一个httpd容器,并挂载匿名卷data_share

docker run -d -p 80:80 -v data_share httpd

通过docker inspect命令看一下具体的挂载信息

docker inspect 容器id

在这里插入图片描述

注意:挂载匿名卷不能指定权限(均为读写权限),也不能挂载单个文件(只能是目录)。

二、数据共享

1.容器和主机之间共享

docker cp可以在容器和host之间复制数据,当然我们也可以直接通过Linux的cp命令复制到 /var/lib/docker/volumes/xxx。

docker cp命令用于在容器和宿主机之间复制文件或目录。其基本语法如下:

docker cp <containerId>:<src_path> <host_path>
docker cp <host_path> <containerId>:<dest_path>

其中,<containerId>是容器的ID或名称,<src_path>是容器内的源路径,<host_path>是宿主机的目标路径,<dest_path>是容器内的目标路径。

举个例子,如果要将容器内的/app/file.txt文件复制到宿主机的/hostdir目录下,可以使用以下命令:

docker cp <containerId>:/app/file.txt /hostdir

如果要将宿主机的/hostdir/file.txt文件复制到容器内的/app目录下,可以使用以下命令:

docker cp /hostdir/file.txt <containerId>:/app

通过docker cp命令,可以方便地在容器和宿主机之间复制文件或目录,从而实现数据的传输和共享。

2.容器之间共享

(1)方法一:-v非匿名挂载

将共享数据放在主机上的共享目录中,然后将该目录挂载到多个容器中。具体挂载操作上面已经讲过了。

(2)方法二:Volume Container

Volume Container:

Volume Container是一种设计模式,它专门用于管理数据卷。在这种模式下,我们创建一个专门用于挂载数据卷的容器,其他应用容器可以通过挂载这个Volume Container来访问数据卷。这种模式的好处是可以将数据卷的管理和维护与应用容器分离,使得数据卷的管理更加灵活和方便。

实操:

  1. 创建Volume Container:可以使用docker create命令创建一个专门用于挂载数据卷的容器,例如:

    docker create -v /data --name data_container busybox
    

    这将创建一个名为data_container的容器,用于挂载/data路径作为数据卷。

  2. 使用Volume Container:其他应用容器可以通过--volumes-from参数来挂载Volume Container中的数据卷,例如:

    docker run --volumes-from data_container -d --name app_container1 image1
    docker run --volumes-from data_container -d --name app_container2 image2
    

    这样,app_container1和app_container2就可以共享data_container中的数据卷。

Data-packed Volume Container:

Data-packed Volume Container是指将数据直接打包到容器中的数据卷中,使得容器本身就包含了数据。这种模式适用于一些需要将数据和应用打包在一起的场景,例如一些需要快速部署的应用或者一些需要便携式的数据处理工具。

实操:

  1. 创建Data-packed Volume Container:可以使用docker run命令直接将数据挂载到容器中,例如:

    docker run -v /host/data:/container/data -d --name data_packed_container image
    

    这将创建一个名为data_packed_container的容器,并将/host/data路径挂载到容器内的/container/data路径上。

  2. 使用Data-packed Volume Container:其他容器可以通过--volumes-from参数来挂载Data-packed Volume Container中的数据卷,例如:

    docker run --volumes-from data_packed_container -d --name app_container image
    

    这样,app_container就可以访问data_packed_container中的数据卷。

总的来说,Volume Container和Data-packed Volume Container是两种不同的数据卷管理模式,它们分别适用于不同的场景和需求。通过合理地使用这些模式,可以更好地管理和维护容器中的数据,从而提高容器化应用的灵活性和可维护性。

Docker使用数据卷挂载进行数据存储与共享 在 Docker 中,挂载(Mounting)和数据卷(Data Volumes)是用于在容器和宿主机之间共享数据的机制。 阅读详情

相关推荐

Docker 数据管理:实现将主机目录挂载到容器中并共享

Docker 数据管理 Docker 内部以及容器之间管理数据,在容器中管理数据主要有两种方式: 数据卷(Data volumes) 数据卷容器(Data volume containers) 数据卷 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性: 数据卷可以在容器之间共享和重用 对数据卷的修改会立马生效 对数据卷的更新,不会影响镜像 卷会一直存在,直...

普通Gopher 1456

Docker学习笔记(八)Storage driver

Storage driver Docker使用storage driver(存储驱动程序)来管理image和container的数据,不管是image的只读layer还是container的可写layer都基于这些storage driver的特点来设计实现。目前支持的storage driver有aufs、OverlayFS和Brtfs等。在满足版本约束的条件下,我们可以修改配置来使docke...

Hunk的菜鸟之路 1553

Doker : Docker 容器与宿主机共享文件

这样的话,你无论在哪个地方创建文件,都能在对方目录下看到数据绑定成功的标志。

九师兄 3633

Docker之几种storage-driver比较

title: Docker之几种storage driver比较 date: 2015-11-27 18:16:22 tags: dockercategories: Docker Others本文介绍Docker使用的几种storage driver。目前Docker支持如下几种storage driver: 目录: * storage driver的选择 * aufs *

vchy的博客 3万+

VL53L0X测距不准?手把手教你做RefSPAD校准与环境补偿(附Arduino/STM32代码)

本文详细解析了VL53L0X激光测距传感器精度不足的原因,并提供了RefSPAD校准与环境补偿的完整解决方案。通过Arduino和STM32代码示例,手把手教你实现毫米级测距稳定性,适用于机器人避障、工业检测等场景。

weixin_28744423的博客 256

MTK平台LCD驱动开发实战:从零开始点亮你的Android屏幕

本文详细介绍了在MTK平台进行Android LCD驱动开发的完整流程。从理解LK与Kernel双核驱动框架入手,手把手讲解驱动结构体、屏幕参数配置、初始化序列编写以及PLL_CLOCK计算等核心步骤,并提供了系统集成配置与实用的调试避坑指南,帮助开发者高效点亮新屏幕。

terraform7cloud的博客 292

Docker——存储驱动原理

Docker文件存储

weixin_50071922的博客 2034

绑定压力的计算方法

压强的公式为P=F/S,其中P为ACF要求的本压压强范围,S为受压面积,F为本压压头施加的力。绑定参数需要按线体按压头进行DOE确认,并使用DOE确认好的参数按压头重新绑定标识好送ACF厂商实测固化率、粒子变形的情况,避免绑定参数导致的异常,在绑定参数的设定过程中温度和时间可以使用仪器实测但绑定的压力则需要换算。工程上绑定压力换算的原则是:1、FPC属于柔性物料,柔性物料的受压面积按FPC绑定的受压面积=FPC绑定的长度。一、工程上FOG FPC本压压力换算(柔性材料以挤压的接触面积=受力面积)F=P。

weixin_53757859的博客 1533

docker 文件分层与数据卷挂载

Docker学习之路(三) docker 文件 分层理解 数据卷 数据同步 (一) 个人分层理解 在前文中 有过 拉取Mysql 最新版后 再拉取mysql 5.7.30在下载镜像的时候 提示有些文件已存在! 其实 通过第二章 学习 拉取了许许多多镜像后 终于发现 无论什么镜像 在下载的时候 都不是一个下载进度条 都是多层 多个进度条下载 有的会提示 Already exists 好像 一个镜像被拆分成了 多层宝塔一般 同时分层下载。 个人理解 : 这种分层技术 是 docker 强大的功能点之一 会

胖虎儿的博客 1万+

告别社区5级:一个脚本搞定小米/红米BL解锁的账号绑定限制(附资源下载与避坑指南)

本文提供了一种绕过小米/红米设备Bootloader解锁社区等级限制的技术方案,适用于MIUI 12.5-14和HyperOS 1.0系统。通过自动化脚本临时修改系统组件,用户可快速完成账号绑定和设备解锁流程,附详细操作指南和常见问题解决方案。

weixin_27330481的博客 729

Dify + Oracle + MCP:轻松构建 RAG 应用与Oracle MCP Agent

通过一个实践案例,展示如何使用 Oracle 23ai 数据库、Dify、Oracle SQLcl MCP 从零开始构建一个功能完备的 RAG 应用,以及通过 Agent 与 SQLcl MCP Server 实现 Oracle 数据访问。

Rambo zheng的博客 2501

用三个实验,告诉你Docker数据卷挂载与目录挂载的区别?

采用数据卷进行挂载会自动将容器运行所需的文件复制出来,放置到对应的数据卷中。采用目录挂载的方式,则会导致容器因缺少运行所需的文件,而出错。对应的数据卷有数据,就会将容器内的数据覆盖。对应的目录有数据,则会将被容器加载,保证容器的正常运行。对于多容器共享,无论是数据卷挂载还是容器挂载,都可以实现多个容器共享文件。优点:这种方式相当于把挂载全部交给Docker本身处理,方便快捷。缺点:真实挂载目录由Docker生成,目录较深,不方便查找。

wangye135的博客 3658

SIMULINK开发项目实例 1000 例专栏之第912例--AC-DC整流器场景:基于PWM整流器拓扑结构的建模:三相电压型PWM整流器(SR)单位功率因数控制仿真

本文详细介绍了使用Simulink和Simscape Electrical搭建三相电压型PWM整流器(VSR)模型的方法。主要内容包括:系统结构设计、主电路拓扑搭建、单位功率因数控制算法实现(含PLL锁相环、dq变换、PI控制器等模块)、参数配置和仿真设置。通过仿真分析验证了该系统能实现输入电流与电压同相位、输出直流电压稳定等特性,体现了PWM整流器的高效性和低谐波优势。文章还提出了增强鲁棒性、多工况测试等优化建议,为电力电子系统设计提供了实用指导。该建模方法对新能源发电、电动汽车充电等领域具有重要意义。

xiaoheshang_123的博客 7797

Docker数据卷创建、挂载、删除、数据共享

在创建 docker 的镜像和容器后,还需要对容器进行数据管理,以便能与主机、不同容器之间进行交换数据。本文主要介绍如何通过数据卷的方式实现多个容器间的数据共享和交换。

云计算课代表 2024

实战全解|大疆司空2二次开发:从接口开发到第三方业务系统深度融合

大疆司空2二次开发是实现行业无人机定制化应用的关键,通过OpenAPI后端对接+前端组件集成的组合方式,可快速完成功能定制,而与第三方业务系统的深度融合,能彻底打通“业务下发-设备执行-数据回传-流程闭环”的全链路,让无人机管控真正融入行业业务流程。开发过程中,建议优先采用私有版部署保障数据安全,通过中间适配层降低系统耦合度,结合实际业务场景打磨功能,避免过度开发。随着大疆开发者生态的完善,司空2的二次开发能力将持续升级,为更多行业无人机应用提供技术支撑。

2501_93651177的博客 966

高通平台N4单路输入的720P相机预览

N4的一路720P Camera作为MIPI摄像头使用

llw21680的专栏 165

Docker(六)——挂载实现同步+实战

先来考虑这样两个问题如果我们的MySQL是用docker部署的。MySQL的数据存储在容器中,一旦我们把MySQL这个容器delete了,或者直接把整个docker删了。那么数据库的所有数据都丢了,这是不合理的。所以我们要求容器的数据能够存储在本地。容易通常是以后台的方式运行的,假如我们用部署了一个Nginx容器,每次修改Nginx配置文件都要进入容器,这是十分麻烦的。如果能在宿主机提供一个路径映射,直接在宿主机上修改,然后同步到Nginx容器就好了。这个技术就是——

qq_44886213的博客 4554

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Docker数据卷目录挂载

1.什么是数据卷 容器之间可以有一个数据共享的技术!Docker容器中产生的数据,同步到本地! 容器的持久化和同步操作!容器间也是可以数据共享的! 2.使用数据卷 验证 docker inspect 容器id或容器名 方式一:直接使用命令挂载 -v -v 主机目录:容器内目录 docker run -it -v 主机目录1:容器内目录1 -v 主机目录2:容器内目录2 示例 -d 后台运行 -p 端口映射 -v 卷挂载 -e 环境配置 -- name 容器名字 .

tfzz12的博客 2万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【Docker】Linux中Docker数据管理的数据卷及挂载

数据卷(Volumes):数据卷是 Docker 提供的一种数据管理方式,它在 Docker 主机上创建一个特殊的目录,可以直接由容器访问。数据卷的主要优点是数据的持久性和数据共享。即使容器被删除,数据卷中的数据也不会丢失,可以被其他容器使用。绑定挂载(Bind Mounts):绑定挂载允许您将 Docker 主机上的任何目录挂载到容器中。这种方式的优点是数据的实时性,任何在主机上对这个目录的修改都会立即反映到容器中。

SAME_LOVE的博客 2008

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Docker学习:容器间数据挂载与共享 | 远程共享&挂载数据卷 | sshfs挂载远程volume | 容器内部通过sshfs访问远程主机 | -v |--volumes-from(实战篇)

本讲是从Docker系列讲解课程,单独抽离出来的一个小节,主要介绍宿主、容器间数据共享,它的好处自然不言而喻,Tomcat集群就是这么玩儿的(多个tomcat服务,对应一套web应用)。

血煞长虹 的专栏 6266

Docker 数据卷与挂载

在 Docker 中,数据卷和挂载是管理和持久化容器数据的关键机制。它们允许用户在容器之间共享数据,并确保数据在容器重启或删除后仍然存在。

我爱JAVA 2501

docker 数据卷挂载(详细案例)

什么是数据卷: 当我们把应用和环境 打包成一个镜像。 并且以这个镜像 运行产生一个容器时,当这个容器被删除,容器中的数据也随之被删除。 于是便产生了需求:容器中的数据持久化。 容器之间 有一个数据共享技术,将docker 中产生的 数据 同步到本地。 这就是 卷技术,将容器的内目录挂载到 本地,也就是Linux 服务器上。 容器的持久化操作和同步操作,容器之间可以数据共享。 如何使用数据卷: 1:使用命令直接挂载 docker run -it -v 主机目录:容器目录内 可以 使用 docker in

qq_44767162的博客 1万+

docker 数据卷的挂载和使用

Docker数据卷 容器之间的数据共享技术, Docker容器产生的数据同步到本地 卷技术 --> 目录挂载, 将容器内的目录挂载到服务器上 使用命令来挂载 -v # 可以挂载多个目录 docker run -it -v 主机目录地址:容器内目录地址 # 测试 docker run -it -v /root/temp:/home centos /bin/bash linux主机的temp目录就和容器的home目录的操作是双向绑定了 删除容器并不会删除linux主机的数据 测试挂载Mysql

weixin_44953227的博客 6373

【Docker】数据管理之数据卷的挂载

为了很好的实现数据保存和数据共享,Docker提出了Volume这个概念,简单的说就是绕过默认的联合 文件系统,而以正常的文件或者目录的形式存在于宿主机上。又被称作数据卷。使用数据卷时,最好通过创建和挂载数据卷来启动容器,而不是在创建或启动容器后再进行挂载,因为这样做比较麻烦,需要修改很多配置文件。

无法自律的人的博客 1941

docker的挂载和数据卷

我们还定义了两个 volumes,一个用于将本地的 /data/mysql 目录挂载到 MySQL 容器中的 /var/lib/mysql 目录上,另一个用于将当前目录(即 .)挂载到 Django 容器中的 /code 目录上。它们允许容器中的数据在容器停止和删除后仍然存在,并允许多个容器共享同一卷,使用数据卷可以使容器中的数据持久化,并且可以在多个容器之间共享相同的数据。MySQL 容器中的数据会被保存到本地的 /data/mysql 目录中,而 Django 容器中的代码会被保存到本地的当前目录中。

liulanba的博客 6043

Docker容器挂载

docker的理念:将应用和环境打包成一个镜像!通过镜像启动容器运行 问题:在容器中存储的程序数据是需要持久化的,不能容器删了数据也随之删除。比如,安装一个MySQL容器,在其中存储了大量数据,结果把容器删了数据也没了,就相当于删库跑路,这是不可能发生的 数据卷技术的引入:我们希望Docker容器产生的数据可以自动同步到本地,这样容器删了数据并不会丢失;同时数据也可在容器之间共享。这就是卷技术,也就是目录的挂载,将容器内的目录挂载到linux上 总结:容器的持久化和同步操作!容器间也可以实现数据共享! 使

chenxuezhou的博客 1万+
上一篇: 玩转Docker(五):网络
下一篇: 玩转Docker(七):Docker Compose
TracyCoder123
博客等级 码龄8年 1万+粉丝 226原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TracyCoder123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值