docker中三种常用的持久化数据的方式

news/2024/6/3 17:57:10 标签: docker, 容器, 运维

文章目录

  • 介绍
    • 1.docker run -v
    • 2.volumes
    • 3.bind mounts

介绍

“前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。”

在Docker中,有以下三种常用的持久化数据的方式,可以将宿主机挂载到容器

  • 1.docker run -v
    运行容器是,直接挂载本地目录到容器
  • 2.Docker 数据卷(Docker Volumes):
    • docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)
    • docker默认的存储数据费昂视
  • 3.bind mounts:
    • 将宿主机上的任意位置文件或目录挂载到容器

下面进行练习说明:

docker_run_v_15">1.docker run -v

运行一个容器,挂载本地目录

创建本地目录

mkdir /opt/wwwroot
echo "web1" > /opt/wwwroot/index.html

想本地目录中添加index.html文件

docker run -d --name web1 -v opt/wwwroot/index:/usr/share/nginx/html nginx:latest

运行容器,将/opt/wwwroot目录挂载到/usr/share/nginx/html目录中
docker ps

在这里插入图片描述
容器ip

docker inpect web1 | grep IPAddress

在这里插入图片描述
访问nginx容器

在这里插入图片描述
可以看到本地的文件已经映射到了容器中。

2.volumes

创建一个特殊的目录,由 Docker 管理,并且可以在多个容器之间共享和重用。使用 -v 或 --mount 参数以及卷的名称指定要挂载的数据卷。

注意
位置是: var/lib/docker/volumes/
不是很灵活!!!

创建一个容器卷:

/var/lib/docker/volumes/nginx-vol/

查看该文件

ls /var/lib/docker/volumes/nginx-vol/_data/

在这里插入图片描述
还没有任何东西

docker run -d --name web2 --mount src=nginx-vol,dst=/usr/share/nginx/html nginx:latest

再次查看挂载点

ls /var/lib/docker/volumes/nginx-vol/_data/

在这里插入图片描述

3.bind mounts

这种方式比volumens 比较灵活,可以在宿主机任何位置创建文件挂载。

创建用于容器挂载目录web5root

mkdir /opt/web5root

运转web5容器使用bindmount方式实现本地任意目录挂载

docker run -d --name web5 --mount type=bind,src=/opt/web5root,dst=/usr/share/nginx/html nginx:latest

查看已创建目录,里面没有任何数据

ls /opt/web5root/

添加内容到 /opt/web5root/index中

echo "web5 running" > index.html

使用url或者wget访问容器,curl上面用过了,这次用wget

wget -O - -q 172.21.83.6

在这里插入图片描述

这些持久化方式提供了不同的灵活性和适应性,可以根据具体需求选择合适的方式进行数据的持久化。



http://www.niftyadmin.cn/n/5360526.html

相关文章

通过 ChatGPT 的 Function Call 查询数据库

用 Function Calling 的方式实现手机流量包智能客服的例子。 def get_sql_completion(messages, model"gpt-3.5-turbo"):response client.chat.completions.create(modelmodel,messagesmessages,temperature0,tools[{ # 摘自 OpenAI 官方示例 https://github.com/…

C++:默认参数竟是静态的?

看下列代码执行结果&#xff0c;你猜一猜会输出什么&#xff1f; #include<iostream> using namespace std; long long a 10; struct A {virtual void fun(int a10){cout << a;} }; struct B :public A{void fun(double) {cout << 6;} }; int main() {B b;…

LabVIEW核能设施监测

LabVIEW核能设施监测 在核能领域&#xff0c;确保设施运行的安全性和效率至关重要。LabVIEW通过与硬件的紧密集成&#xff0c;为高温气冷堆燃料装卸计数系统以及脉冲堆辐射剂量监测与数据管理系统提供了解决方案。这些系统不仅提高了监测和管理的精确度&#xff0c;也保证了核…

Linux实验记录:使用Apache的虚拟主机功能

前言&#xff1a; 本文是一篇关于Linux系统初学者的实验记录。 参考书籍&#xff1a;《Linux就该这么学》 实验环境&#xff1a; VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 正文&#xff1a; 目录 前言&#xff1a; 正文&…

java(面向对象基础)

面向对象的三大特征&#xff1a;封装、继承、多态 一、封装 用 类设计对象处理某一个事物的数据时&#xff0c;应该把要处理的数据&#xff0c;以及处理这些数据的方法&#xff0c;设计到一个对象中去。 封装规范&#xff1a;合理隐藏&#xff0c;合理暴露&#xff08;先将成…

【后端】乐观锁和悲观锁

前置知识点 锁&#xff1a;一种确保数据安全的机制和手段。 在多个线程修改共享变量时&#xff0c;我们可以对修改操作进行加锁。当多个用户修改表中的同一数据时&#xff0c;我们可以对该行数据进行加锁&#xff08;行锁&#xff09;。锁是用于控制多个操作在并发环境下按顺…

银行数据仓库体系实践(12)--数据管理及治理

数据仓库作为全行数据中心能高效支持全行或全公司的统计 、数据分析工作&#xff0c;除了稳定的ETL架构、高效的数据处理能力&#xff0c;流畅的开发管理流程&#xff0c;还需要有全面的数据管理体系&#xff0c;确保提供的数据准确性和高质量。数据管理主要有数据标准&#xf…

Python实现TCP和UDP通信

目录 一&#xff1a;TCP 二&#xff1a;UDP 一&#xff1a;TCP 在Python中实现TCP通信可以通过使用内置的socket模块来完成。以下是一个简单的示例&#xff0c;展示了如何使用Python的socket模块创建一个TCP客户端和服务器。 TCP服务器 import socket def start_server(): s…