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

[Docker集群] Docker 数据持久化实操命令清单

目录

一、数据卷挂载相关命令

1️⃣指定宿主机目录挂载(路径可控)

核心场景

基础语法

实操示例

注意事项

2️⃣匿名卷挂载(临时存储)

核心场景

基础语法

实操示例

注意事项

3️⃣命名卷挂载(长期共享)

核心场景

基础语法

实操示例

注意事项

4️⃣数据卷通用管理命令

二、数据卷容器相关命令

1️⃣核心场景

2️⃣基础流程与命令

步骤 1:创建数据卷容器(仅存储数据,不运行业务)

步骤 2:在数据卷容器中写入测试数据(可选)

步骤 3:创建其他容器,挂载数据卷容器

实操示例

3️⃣注意事项

三、常见问题排查命令


本清单整理了前文提到的数据卷挂载(指定宿主机目录、匿名卷、命名卷)和数据卷容器的核心操作命令,标注了使用场景、语法格式及注意事项,适合直接复制执行或作为学习参考。

一、数据卷挂载相关命令

1️⃣指定宿主机目录挂载(路径可控)

核心场景

需明确数据在宿主机的存储位置(如宿主机特定磁盘分区、与宿主机其他服务共享文件)。

基础语法

bash

# 格式:-v 宿主机绝对路径:容器内路径[:权限]
# 权限可选:ro(只读)、rw(读写,默认,可省略)
docker run [容器启动参数] -v <宿主机绝对路径>:<容器内路径>[:ro/rw] <镜像名>
实操示例

bash

# 1. 以交互模式启动centos:7容器,将宿主机/data目录挂载到容器/opt目录(读写权限)
docker run -it --name c1 -v /data:/opt centos:7# 2. 启动nginx容器,将宿主机/nginx/conf目录挂载到容器/etc/nginx(只读,防止容器修改配置)
docker run -d --name nginx_ro -v /nginx/conf:/etc/nginx:ro -p 8080:80 nginx
注意事项
  • 宿主机路径必须是绝对路径(如/data,不能写./data),否则 Docker 会误判为 “命名卷”。
  • 若宿主机 / 容器内路径不存在,Docker 会自动创建该目录(文件挂载需确保宿主机文件已存在)。

2️⃣匿名卷挂载(临时存储)

核心场景

临时存储数据,无需记住宿主机路径(如容器日志、临时生成的文件)。

基础语法

bash

# 格式:只指定容器内路径,不写宿主机路径
docker run [容器启动参数] -v <容器内路径> <镜像名>
实操示例

bash

# 1. 启动nginx容器,匿名挂载容器/etc/nginx目录(宿主机路径自动生成)
docker run -d --name nginx_anon -v /etc/nginx -p 8081:80 nginx# 2. 进入容器,验证挂载目录(在容器内操作/etc/nginx,数据会同步到宿主机自动路径)
docker exec -it nginx_anon bash
cd /etc/nginx && touch test_anon.txt  # 在容器内创建文件# 3. (可选)查看匿名卷在宿主机的实际路径(需先获取卷ID)
docker volume ls  # 列出所有卷,匿名卷名称为随机ID(如a1b2c3d4...)
docker volume inspect <匿名卷ID>  # 查看详情,"Mountpoint"字段即为宿主机路径
注意事项
  • 匿名卷默认存储在宿主机/var/lib/docker/volumes/<卷ID>/_data目录。
  • 容器删除后,匿名卷不会自动删除,需手动清理(见 “数据卷管理命令”)。

3️⃣命名卷挂载(长期共享)

核心场景

长期使用、多容器共享数据(如数据库数据、多服务共用的静态资源)。

基础语法

bash

# 1. (可选)提前创建命名卷(不创建的话,run时会自动创建)
docker volume create <卷名># 2. 挂载命名卷启动容器
docker run [容器启动参数] -v <卷名>:<容器内路径> <镜像名>
实操示例

bash

# 1. 提前创建命名卷vol_nginx(用于存储nginx静态页面)
docker volume create vol_nginx# 2. 启动nginx容器,挂载vol_nginx到容器/usr/share/nginx/html(静态页面目录)
docker run -d --name nginx_named -v vol_nginx:/usr/share/nginx/html -p 8082:80 nginx# 3. 多容器共享该卷:启动第二个nginx容器,同样挂载vol_nginx
docker run -d --name nginx_named2 -v vol_nginx:/usr/share/nginx/html -p 8083:80 nginx
# 此时两个nginx容器会共享同一套静态页面(修改任意一个容器的/html目录,另一个同步变化)
注意事项
  • 命名卷默认存储在宿主机/var/lib/docker/volumes/<卷名>/_data目录,路径固定易管理。
  • 命名卷支持跨容器、跨镜像使用,只要卷名正确即可挂载。

4️⃣数据卷通用管理命令

用于查看、删除、清理数据卷(适用于匿名卷和命名卷)。

命令功能描述示例
docker volume ls列出所有数据卷(包括匿名卷、命名卷)docker volume ls
docker volume inspect <卷名/卷ID>查看单个数据卷的详情(路径、驱动等)docker volume inspect vol_nginx
docker volume rm <卷名/卷ID>删除指定数据卷(需确保无容器使用该卷)docker volume rm vol_nginx
docker volume prune清理所有 “未被容器使用” 的数据卷(谨慎执行)docker volume prune(执行前会提示确认)

二、数据卷容器相关命令

1️⃣核心场景

多容器共享多个数据卷(如微服务中,Web 服务、API 服务共用 “配置卷” 和 “日志卷”)。

2️⃣基础流程与命令

步骤 1:创建数据卷容器(仅存储数据,不运行业务)

bash

# 格式:--name 数据卷容器名 -v 数据卷1 -v 数据卷2 ... 基础镜像(如centos、ubuntu)
docker run -it --name <数据卷容器名> -v <容器内路径1> -v <容器内路径2> <基础镜像> /bin/bash
步骤 2:在数据卷容器中写入测试数据(可选)

bash

# 进入数据卷容器
docker exec -it <数据卷容器名> bash# 在数据卷路径中创建文件(示例:/data1和/data2为数据卷路径)
echo "共享数据1" > /data1/share1.txt
echo "共享数据2" > /data2/share2.txt
步骤 3:创建其他容器,挂载数据卷容器

bash

# 格式:--volumes-from <数据卷容器名>(无需再写-v参数)
docker run -it --name <新容器名> --volumes-from <数据卷容器名> <基础镜像> /bin/bash
实操示例

bash

# 1. 创建数据卷容器data_container,包含/data1和/data2两个数据卷
docker run -it --name data_container -v /data1 -v /data2 centos:7 /bin/bash# 2. (在data_container内)写入共享数据
echo "this is data_container" > /data1/info.txt
echo "shared by multiple containers" > /data2/note.txt
exit  # 退出数据卷容器# 3. 创建容器app1,挂载data_container的数据卷
docker run -it --name app1 --volumes-from data_container centos:7 /bin/bash
# 验证数据:在app1中查看/data1和/data2
cat /data1/info.txt  # 输出:this is data_container
cat /data2/note.txt  # 输出:shared by multiple containers# 4. 创建容器app2,同样挂载data_container(实现app1和app2共享数据)
docker run -it --name app2 --volumes-from data_container centos:7 /bin/bash
# 在app2中修改/data1/info.txt,app1中会同步变化
echo "app2修改后的数据" > /data1/info.txt

3️⃣注意事项

  • 数据卷容器无需保持运行状态,即使停止,其他容器仍可挂载其数据卷。
  • 删除数据卷容器前需谨慎:若数据卷未与其他容器绑定,删除后数据会丢失(建议先通过docker ps -a确认是否有容器使用该数据卷容器)。
  • 若需长期保存数据卷容器的内容,可将其数据卷与 “命名卷” 结合(创建数据卷容器时用-v 命名卷:容器内路径)。

三、常见问题排查命令

  1. 检查容器挂载情况:查看容器的挂载配置是否正确

    bash

    docker inspect <容器名> | grep -A 20 "Mounts"
    
  2. 验证宿主机与容器数据同步:在宿主机修改文件,查看容器内是否同步

    bash

    # 宿主机操作(示例:宿主机路径/data,容器路径/opt)
    echo "宿主机写入" > /data/test_sync.txt# 容器内验证
    docker exec -it <容器名> cat /opt/test_sync.txt  # 应输出“宿主机写入”
    
  3. 解决权限问题:若容器内无法读写挂载目录,可在docker run时添加--privileged参数(慎用,提升容器权限)

    bash

    docker run -it --name c1 -v /data:/opt --privileged centos:7
http://www.dtcms.com/a/491976.html

相关文章:

  • 北海哪家做网站如何推广网站话术
  • 湖北响应式网站设计制作深圳网站优化推广方案
  • 力扣2080. 区间内查询数字的频率
  • 403错误:互联网世界里的 “无权访问” 启示录
  • Qt-ui界面
  • C#多点滤波
  • 技术网站平台汇总与分析(2025 版)
  • 如何做网站轮播大图安平网站建设优化
  • Client-applyfriendlist类
  • wordpress制作的网站wordpress 关闭访问
  • WSL + Docker 网络访问详解
  • logrotate-日志切割
  • 宁波住房建设网站如何建立网络平台
  • [嵌入式系统-125]:AI应用程序、Pytorch、CUDA、操作系统、CPU、GPU的分层关系
  • .NET UA Server SDK基于.NET Standard实现工业级OPC UA跨平台服务器
  • 显卡算力过高导致PyTorch不兼容的救赎指南
  • 申报网站2018年企业网站优化应该怎么做
  • NAS是什么?小白如何挑选自己第一款NAS?
  • h5游戏免费下载:《西部牛仔》
  • seo优化网站建设静态宠物网站设计论文
  • 网站建设公司销售招聘重庆seo入门教程
  • 地产金融网站开发租一个服务器要多少钱
  • RHCSA复习练习
  • YOLOv1 与 YOLOv2 核心技术总结
  • 怎么看一个网站什么语言做的如何做网络销售
  • 重庆建站佛山人才招聘网
  • Spring Boot开发最佳实践速览
  • C程序结构
  • 大型商城网站建设方案品牌网站建设小蝌蚪a
  • 【系统分析师】写作框架:软件系统测试及其应用