Docker存储方式总结

docker四种存储方式

docker四种方式:默认、volumes数据卷、bind mounts挂载、tmpfs mount(仅在linux环境中提供),其中volumes、bind mounts两种实现持久化容器数据;

  • 默认:数据保存在运行的容器中,容器删除后,数据也随之删除;
  • volumes:数据卷,数据存放在主机文件系统/var/lib/docker/volumes/目录下,该目录由docker管理,其它进程不允许修改,推荐该种方式持久化数据;
  • Bind mounts:直接挂载主机文件系统的任何目录或文件,类似主机和容器的共享目录,主机上任何进程都可以访问修改,容器中也可以看到修改,这种方式最简单。
  • tmpfs:数据暂存在主机内存中,不会写入文件系统,重启后,数据删除。

下图展示了Volumes,Bind mounts和tmpfs mounts三种存储技术的不同:

1、Volumes使用场景

  • 在多个容器间共享数据。
  • 无法确保Docker主机一定拥有某个指定的文件夹或目录结构,使用Volumes可以屏蔽这些宿主机差异。
  • 当你希望将数据存储在远程主机或云提供商上。
  • 当你希望备份,恢复或者迁移数据从一台Docker主机到另一台Docker主机,Volumes是更好的选择。

2、Bind mounts使用场景

  • 在宿主机和容器间共享配置文件。例如将nginx容器的配置文件保存在宿主机上,通过Bind mounts挂载后就不用进入容器来修改nginx的配置了。
  • 在宿主机和容器间共享代码或者build输出。例如将宿主机某个项目的target目录挂载到容器中,这样在宿主机上Maven build出一个最新的产品,可以直接咋i容器中运行,而不用生成一个新的镜像。
  • Docker主机上的文件或目录结构是确定的

3、tmpfs mounts使用场景

  1. 当你因为安全或其他原因,不希望将数据持久化到容器或宿主机上,那你可以使用tmpfs mounts模式。

4、Bind mounts和Volumes行为上的差异

  • 如果你将一个空Volume挂载到一个非空容器目录上,那么这个容器目录中的文件会被复制到Volume中,即容器目录原有文件不会被Volume覆盖。
  • 如果你使用Bind mounts将一个宿主机目录挂载到容器目录上,此容器目录中原有的文件会被隐藏,从而只能读取到宿主机目录下的文件

参考:

https://blog.csdn.net/MePlusPlus/article/details/93048917

https://www.jianshu.com/p/ef0f24fd0674

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Prometheus是一种开源监控系统,可用于监控多个维度的应用程序和系统。使用Prometheus可收集和存储各种指标,并提供强大的查询语言和图形化界面,方便用户进行数据分析和可视化。 在本文中,我将分享如何使用Docker搭建Prometheus并进行实验的总结。 步骤一:安装DockerDocker Compose 在开始之前,需要先安装DockerDocker Compose。你可以在Docker官方网站上找到安装说明。 步骤二:创建Docker Compose文件 在本例中,我们将使用Docker Compose创建一个Prometheus容器。以下是Docker Compose文件的示例代码: ``` version: '3' services: prometheus: image: prom/prometheus ports: - "9090:9090" volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml command: - '--config.file=/etc/prometheus/prometheus.yml' ``` 此Docker Compose文件定义了一个名为“prometheus”的服务,使用Prometheus镜像,并将容器的9090端口映射到主机的9090端口。此外,它还将主机上的“prometheus.yml”文件挂载到容器的“/etc/prometheus/prometheus.yml”路径中,以便我们可以在容器中使用该配置文件。 步骤三:创建Prometheus配置文件 接下来,我们需要创建Prometheus的配置文件。在本例中,我们将创建一个名为“prometheus.yml”的文件,并将其放在与Docker Compose文件相同的目录中。以下是一个示例配置文件: ``` global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node_exporter' static_configs: - targets: ['node-exporter:9100'] ``` 此配置文件定义了两个作业。第一个作业名称为“prometheus”,其中使用静态配置将本地主机的9090端口指定为目标。第二个作业名称为“node_exporter”,其中使用静态配置将名为“node-exporter”的容器的9100端口指定为目标。 步骤四:启动Prometheus容器 现在,我们已经准备好启动Prometheus容器了。在命令行中,转到包含Docker Compose文件和Prometheus配置文件的目录,并运行以下命令: ``` docker-compose up -d ``` 此命令将使用Docker Compose文件创建并启动Prometheus容器。在容器启动后,可以通过访问http://localhost:9090来访问Prometheus Web界面。 步骤五:实验 现在,我们已经成功搭建了Prometheus并启动了容器。接下来,我们可以进行一些实验,例如: 1. 在Prometheus Web界面中,尝试添加新的指标,并使用PromQL查询语言查询指标数据。 2. 在本地主机上运行一个简单的HTTP服务器,并在Prometheus配置文件中添加静态配置以收集HTTP服务器的指标。 3. 在另一个容器中运行一个简单的HTTP服务器,并在Prometheus配置文件中添加静态配置以收集该容器的指标。 总结 通过使用Docker,我们可以轻松地搭建和运行Prometheus监控系统,并进行实验。使用Prometheus,我们可以收集和存储多个维度的指标,并进行数据分析和可视化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值