当前位置: 首页 > news >正文

Docker-08.Docker基础-本地目录挂载

一.需求说明

我们先来看一个需求:

首先查看mysql容器,是否有数据卷挂载。我们之前是没有对mysql容器进行数据卷挂载的。

docker inspect mysql

使用该命令可以查看容器的具体信息:

"Mounts": [{"Type": "volume","Name": "65e9f00956e191fe2aa144ace8f03904e738945d0b6d40cafdb3292a0097d4c3","Source": "/var/lib/docker/volumes/65e9f00956e191fe2aa144ace8f03904e738945d0b6d40cafdb3292a0097d4c3/_data","Destination": "/var/lib/mysql","Driver": "local","Mode": "","RW": true,"Propagation": ""}],

可以找到Mounts里面展示了挂载信息。其中Source目录是在宿主机上的挂载路径。而Destination是在容器内部的路径。容器内该路径“/var/lib/mysql”是mysql容器的数据存储目录。因为mysql要不断的进行数据存储。因此其存储数据会不断增加。容器会不断变大。如果不做挂载,容器将来想要做迁移会非常麻烦。因此挂载是合理的。

Name是数据卷的名字,而这个名字不是我们起的,是自动生成的。这种由容器自动生成的数据卷因此又叫做匿名卷。我们不想使用这个名字,因为太长了很不方便记忆和使用。

假如我们现在要针对mysql进行版本升级,要把旧的mysql删掉。创建新的容器。删除后数据卷还在,数据还在。创建新的mysql容器,生成卷的名字就变了,原来的数据在旧的卷中就丢失了,等于只做了版本升级而没有进行数据迁移。

因此我们要使用本地目录挂载。将mysql容器挂载到本地目录。挂载到任何你想要挂载的地方。即宿主机和容器内目录直接挂载。

二.本地目录挂载

请注意,在挂载本地目录时一定要以./或者/开头而不能以字段名开头,否则将会被识别成数据卷而非目录。

我们首先创建要挂载的目录和文件夹。

mkdir mysql

进入mysql目录下创建data,conf,init用来挂载mysql数据目录、配置文件和初始化脚本。

mkdir conf
mkdir data
mkdir init

目录创建好了,那么容器内的哪些目录要和这些新创建的目录进行挂载呢?我们在官方文档中进行查阅。

配置文件目录(该目录也可以通过容器具体信息查看):

数据存储目录:

初始化目录:

明确了挂载点和被挂载的路径,我们就可以执行docker run命令进行本地目录的挂载了。

首先我们删除原来的MySQL容器,然后进行本地目录挂载。

# 1.删除原来的MySQL容器
docker rm -f mysql# 2.进入root目录
cd ~

我们首先将准备好的两个文件放入挂载点目录中。

接着运行命令:

# 3.创建并运行新mysql容器,挂载本地目录
docker run -d \--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \-v ./mysql/data:/var/lib/mysql \-v ./mysql/conf:/etc/mysql/conf.d \-v ./mysql/init:/docker-entrypoint-initdb.d \mysql

挂载过后,有很多新数据产生。说明挂载成功的挂载到本地目录。

以上就容器本地目录挂载的方式。

http://www.dtcms.com/a/325346.html

相关文章:

  • Camera open failed
  • Flutter SharedPreferences存储数据基本使用
  • Apollo平台下相机和激光雷达手眼联合标定
  • 面试题-----RabbitMQ
  • RabbitMQ 消息转换器详解
  • OV5640 相机开发流程
  • 闸机控制系统从设计到实现全解析:第 5 篇:RabbitMQ 消息队列与闸机通信设计
  • C语言:贪吃蛇游戏
  • MiniCPM-V 4.0开源,号称是手机上的GPT-4V
  • 41.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--集成网关--网关集成Swagger
  • 量子计算:叩响金融定价革命的大门——期权定价的范式转移
  • 用Python实现Excel转PDF并去除Spire.XLS水印
  • glide缓存策略和缓存命中
  • 基于 JavaWeb+MySQL设计实现博客管理系统
  • [激光原理与应用-230]:物理学主要分支、研究对象、衍生技术及职业方向解析
  • 智慧零售的本质重构与技术创新:基于定制开发开源AI智能名片S2B2C商城小程序的实践路径
  • Redis应⽤-缓存与分布式锁
  • MySQL误删数据了,如何快速恢复?
  • GraalVM !拥抱云原生的 JVM
  • AI驱动的智能编码革命:从Copilot到全流程开发自动化
  • 2024年ESWA SCI1区TOP,自适应种群分配和变异选择差分进化算法iDE-APAMS,深度解析+性能实测
  • SysTick定时器的工作原理是什么
  • 在Linux中模拟配置高性能web服务器
  • docker compose和docker-compose命令的区别
  • 【数据可视化-86】中国育儿成本深度可视化分析(基于《中国统计年鉴2023》数据):用Python和pyecharts打造炫酷可视化大屏
  • linux常见故障 实用故障系列文章-2获取挂掉的进程pid
  • Linux kernel network stack, some good article
  • AI模型服务接入WAF防火墙
  • WebSocket-java篇
  • 有序矩阵中第K小的元素+二分查找