Docker-volume【基础使用】

news2024/12/23 0:31:18

目录

【1】将本地的目录挂载到容器中

【2】volume卷,持久化

【3】volume数据共享

【4】volume持久化的作用

【5】volume - 随机卷的使用方式

【6】 启动nginx容器访问80出现HELLO,访问81出现WORLD


【1】将本地的目录挂载到容器中

1、容器的数据目录位置


[root@docker-01 ~]# docker inspect nginx-01 | grep  Id
        "Id": "2576d37d56422db7509fbb6640c7058e0a6a2820966b01218019285ccbe0674f",

2、将本地的目录挂载到容器中

[root@docker-01 ~]# docker run -dit -p 81:80 --name nginx-test -v ./test:/usr/share/nginx/html nginx:latest 
2a7af7def652f4df685830fc1103d0cfc0926d76a33ad3f452b7c5b0f7a04076

[root@docker-01 ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS          PORTS                               NAMES
2a7af7def652   nginx:latest   "/docker-entrypoint.…"   About a minute ago   Up 59 seconds   0.0.0.0:81->80/tcp, :::81->80/tcp   nginx-test

3、验证 

 

【2】volume卷,持久化

1、使用volume即使容器被删除,卷还一直存在,数据一直保持,除非删除卷

2、挂载volume时,会将容器中的内容保存到本地,前提是卷中无数据内容,如果挂载时卷中有数据内容,会将容器中的数据覆盖掉

[root@docker-01 ~]# docker volume ls
DRIVER    VOLUME NAME
[root@docker-01 ~]# docker volume create test
test
[root@docker-01 ~]# docker volume ls
DRIVER    VOLUME NAME
local     test

## 无数据内容的卷
[root@docker-01 ~]# ls /var/lib/docker/volumes/test/_data/
[root@docker-01 ~]#

## 创建容器挂载
[root@docker-01 ~]# docker run -dit -p 82:80 --name nginx-volume -v test:/usr/share/nginx/html nginx:latest 
d9079f03d5e4ed41d3fc1a53654b52097a4d2c170f802475bd1ec6ecca17a8c0

## 会将容器中的数据内容保存包本地
[root@docker-01 ~]# ls /var/lib/docker/volumes/test/_data/
50x.html  index.html

## 修改验证
[root@docker-01 ~]# echo "111" > /var/lib/docker/volumes/test/_data/index.html

 

 使用有数据的volume挂载验证是否会覆盖容器中的数据

[root@docker-01 ~]# docker volume create test-data
test-data

[root@docker-01 ~]# echo "TEST-DATA" > /var/lib/docker/volumes/test-data/_data/index.html

[root@docker-01 ~]# docker run -dit -p 83:80 --name nginx-data -v test-data:/usr/share/nginx/html nginx:latest 
4ffe02efc3fc26c4ccaafd5be7805ee9b0c7ae9c9a9911a2186ba92226adf09c

[root@docker-01 ~]# ls /var/lib/docker/volumes/test-data/_data/
index.html

 

删除容器,验证数据是否还存在

[root@docker-01 ~]# docker rm -f $(docker ps -aq)
4ffe02efc3fc
d9079f03d5e4
2a7af7def652
2576d37d5642

[root@docker-01 ~]# ls /var/lib/docker/volumes/test/_data/
50x.html  index.html

[root@docker-01 ~]# ls /var/lib/docker/volumes/test-data/_data/
index.html

【3】volume数据共享

volume也可以挂载到多个容器中共享使用

[root@docker-01 ~]# docker run -dit -p 80:80 --name nginx-01 -v test:/usr/share/nginx/html nginx:latest 
056905a0ee4336d4c15d75b5414702466e3fe1509dd15e9550a5c5d370eaa04c

[root@docker-01 ~]# docker run -dit -p 81:80 --name nginx-02 -v test:/usr/share/nginx/html nginx:latest 
823f063476ddfb53414eff50471ec1a89214d9f30f47175278c626e3b8a5914f

 

 

【4】volume持久化的作用

1、保证数据安全性

2、数据可重复使用性

3、当某天某个容器死掉了,运行的数据非常重要,并且数据也是用volume做的持久化,那么我们只需要快速的启动一个新的容器并挂载相同的卷继续运行

【5】volume - 随机卷的使用方式

1、动态资源(日志文件),会发生变化的资源使用随即卷,不能使用相同卷做存储,因为会导致数据异常变乱。

2、如果多个容器使用相同的卷做日志的持久化,多台数据同时写入日志文件,会变乱,需要分别做数据的持久化

【6】 启动nginx容器访问80出现HELLO,访问81出现WORLD

[root@docker-01 ~]# docker volume create nginx_conf
nginx_conf
[root@docker-01 ~]# docker volume create nginx_data
nginx_data
[root@docker-01 ~]# docker volume ls
DRIVER    VOLUME NAME
local     nginx_conf
local     nginx_data

[root@docker-01 ~]# cd /var/lib/docker/volumes/nginx_conf/_data/
[root@docker-01 _data]# vim hello_world.conf
server {
  listen 80;
  server_name localhost;
    root /nginx_html/HELLO;
  location / {
    index index.html;
  }
}
server {
  listen 81;
  server_name localhost;
    root /nginx_html/WORLD;
  location / {
    index index.html;
  }
}

[root@docker-01 _data]# cd ../../nginx_data/_data
[root@docker-01 nginx_data]# mkdir HELLO
[root@docker-01 nginx_data]# mkdir WORLD
[root@docker-01 nginx_data]# echo "HELLO" >> HELLO/index.html
[root@docker-01 nginx_data]# echo "WORLD" >> WORLD/index.html

[root@docker-01 _data]# docker run -dit -p 80-81:80-81 --name nginx-01 -v nginx_conf:/etc/nginx/conf.d/ -v nginx_data:/nginx_html nginx:latest 
3f2f4dd0df812981efb957b023b73a7ee2c37394a617fa680013dc098b659b6d

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/777765.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第112天:免杀对抗-加载器分离无文件落地图片隐写SOCK管道参数协议化

知识点 #知识点: 1、无文件落地&分离拆分-将shellcode从文本中提取-file 2、无文件落地&分离拆分-将shellcode与加载器分离-argv 3、无文件落地&分离拆分-将shellcode远程协议加载-http 4、无文件落地&分离拆分-将shellcode通过管道传输-socket 5、…

设计模式与技术场景面试题详解

工厂方法模式 简单工厂模式 工厂方法模式 抽象工厂模式 策略模式 工厂模式策略模式(登录案例) 责任链模式 技术场景 单点登录怎么实现 权限认证是如何实现的 上传数据的安全性你们怎么控制 你负责的项目遇到了哪些棘手的问题?怎么解决的 你们…

Vue系列第二篇:初识Vue项目

上一篇我搭建了Vue开发环境,创建了一个demo项目,借助nginx将Vue项目编译部署。这一篇来看一下Vue项目的结构。如下图所示: 我就创建一个空项目,结果Vue脚手架就帮我自动生成了这么多文件,看着挺吓人的。不用怕&#xf…

第十一章、【Linux】正则表达式与文件格式化处理

正则表达式 (Regular Expression, RE, 或称为常规表达式)是通过一些特殊字符的排列,用以“搜寻/取代/删除”一列或多列文字字串, 简单的说,正则表达式就是用在字串的处理上面的一项“表示式”。正则表达式并不是一个工…

「网络编程」传输层协议_ TCP协议学习_及原理深入理解(一)[万字详解]

「前言」文章内容大致是传输层协议,TCP协议讲解,续上篇UDP协议。 「归属专栏」网络编程 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、TCP协议介绍二、TCP协议2.1 解包与分用2.2 谈谈可靠性2.3 TCP的工作模式2.4 确认应答(ACK)机制2.5 16位序号与…

【基于CentOS 7 的SSH服务】

目录 一、概念 二、特点 三、身份验证机制 1.密码验证 2.密钥对验证 四、验证过程 五、加密机制 1.单向加密 2.对称加密 3.非对称加密 六、基本参数 1.服务名 2.端口号 3.配置文件 3.1 服务器端 3.2 客户端 4.配置文件解析 4.1 /etc/ssh/sshd_config 4.2 /e…

机器学习 day29(高偏差、高方差,参数d对模型的影响)

1. 高偏差、高方差、拟合能力、泛化能力 偏差和方差分别代表拟合能力和泛化能力若给左图数据集拟合一阶多项式(d取1),则该模型有很高的偏差(欠拟合)。因为它对训练集和验证集的表现均不好,所以Jtrain很高…

使用STM32 再实现循迹/跟随/摇头避障小车

循迹小车 硬件介绍和接线 TCRT5000 使用方法和原理见89C52时期的介绍。 循迹小车需要使用两个TCRT5000,左侧的DO接到PB3;右侧的DO接到PB4 CubeMX 1. 在上节的基础上进行修改 配置两个传感器的GPIO 2. 惯例配置更新代码 Keil 注意,如果…

Linux 学习记录54(ARM篇)

Linux 学习记录54(ARM篇) 本文目录 Linux 学习记录54(ARM篇)一、框图分析1. 芯片手册内部框图2. 操作GPIO过程 二、通过汇编完成GPIO操作1. 常用的汇编指令2. GPIO初始化流程3. 查找相关寄存器(1. RCC寄存器(2. GPIO寄存器>1. 模式配置寄存器>2. 输出模式配置寄存器>3…

【云原生】Prometheus之部署 Alertmanager 发送告警

前言 1. Alertmanager 发送告警的介绍 Prometheus 对指标的收集、存储与告警能力分属于 Prometheus Server 和 AlertManager 两个独立的组件,前者仅负责定义告警规则生成告警通知, 具体的告警操作则由后者完成。 Alertmanager 负责处理由 Prometheus…

wxchart 小程序 线条图不显示y轴的网格线 (分割线)

如下图:项目需求不显示包括x轴的6条灰色分割线。 分析: 看了一下源码已经写死了是5条分割线,加一条x轴刻度线。没给公开配置方法。 解决方案: 既然没有配置项目,可以转变思路,把这些线条配置成白色&…

一文掌握如何前后端分离?

随着科技的进步和发展,低代码开发产品拥有广阔的市场前景。前后端分离似乎早已经是发展趋势了,因为做好前后端分离对于前后端的工程师而言是非常有利的,这样也有利于提升办公协作效率。那么,如何前后端分离?分别都有哪…

CentOS 安装Mysql8

1.检查是否已经安装mysql,停止mysql服务,删除mysql ps -ef | grep -i mysql systemctl stop mysqld rpm -e mysql 2.配置仓库 更新秘钥 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 安装mysql8的yum源 rpm -Uvh https://dev.mysql.…

基于linux下的高并发服务器开发(第二章)- 2.17 内存映射(1)

11 / 内存映射相关系统调用 #include <sys/mman.h> void* mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset); - 功能&#xff1a;将一个文件或者设备的数据映射到内存中 - 参数&#xff1a; - void* addr:NULL,由内核指定 - length:要映射的…

【OpenCV】常见问题及解决办法

文章目录 0 前言1 中文乱码问题2 非法路径问题 0 前言 本篇博客主要是总结OpenCV使用过程中遇到的一些问题&#xff0c;以及对应的解决办法&#xff0c;这里重点是关注OpenCV&#xff0c;既有基于C的&#xff0c;也有基于Python的&#xff0c;比较全面&#xff0c;而且也会随着…

【Python】数据分析+数据挖掘——变量列的相关操作

前言 在Python和Pandas中&#xff0c;变量列操作指的是对DataFrame中的列进行操作&#xff0c;包括但不限于选择列、重命名列、添加新列、删除列、修改列数据等操作。这些操作可以帮助我们处理数据、分析数据和进行特征工程等。 变量列的相关操作 概述 下面将会列出一些基本…

对github项目提PR 请求的保姆级教程——以修改casdoor项目的swagger文档为例,干货满满

Github入门教程可以在腾讯犀牛鸟开源人才培养计划里面学习。 PR简介 PR(Pull Request) 即拉取请求,是 GitHub 上进行协同开发的一种非常常用的方式。 它的基本流程是&#xff1a; 开发者fork一个开源项目的代码库,将其克隆到本地。在本地对代码进行修改、添加新功能等。将本…

基于ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升环境、生态、水文、土地、土壤、农业、大气等领域的数据分析能力与项目科研水平教程

详情点击链接&#xff1a;基于ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升环境、生态、水文、土地、土壤、农业、大气等领域的数据分析能力与项目科研水平 一&#xff0c;空间数据获取与制图 1.1 软件安装与应用 1.2 空间数据 1.3海量空间数据下载 1.4 ArcGIS软件快…

MySQL数据库(七)

目录 一、联合查询 1.1内连接 1.2外连接 1.3自连接 1.4子查询 1.5合并查询 一、联合查询 实际开发中往往数据来自不同的表&#xff0c;所以需要多表联合查询。多表查询是对多张表的数据取笛卡尔积&#xff1a; 下面进行多表查询的练习&#xff0c;对应的在表的设计与数据插入中…

练习时长两年半的网络安全防御“first”

1.网络安全常识及术语 下边基于这次攻击演示我们介绍一下网络安全的一些常识和术语。 资产 任何对组织业务具有价值的信息资产&#xff0c;包括计算机硬件、通信设施、 IT 环境、数据库、软件、文档资料、信息服务和人员等。 网络安全 网络安全是指网络系统的硬件、软件及…