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

Docker 数据挂载教程

数据挂载基本概念

Docker 数据挂载(Volume Mount)允许将主机上的目录或文件挂载到容器内部,实现主机和容器之间的数据共享和持久化存储。

挂载类型

  1. 绑定挂载(Bind Mount):直接挂载主机上的特定目录

  2. 卷挂载(Volume):使用 Docker 管理的卷

第一部分:Docker 数据目录迁移

# 1. 创建挂载目录(确保有足够空间)
sudo mkdir -p /home/gao/data/docker
sudo chown root:root /home/gao/data/docker

# 2. 停止 Docker 服务
sudo systemctl stop docker

# 3. 迁移现有数据(使用rsync更安全)
sudo rsync -aqxP /var/lib/docker/ /home/gao/data/docker/

# 4. 备份原docker目录(可选)
sudo mv /var/lib/docker /var/lib/docker.bak

# 5. 修改 Docker 配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "data-root": "/home/gao/data/docker",
  "storage-driver": "overlay2"
}
EOF

# 6. 重新加载并启动 Docker
sudo systemctl daemon-reload
sudo systemctl start docker

# 7. 验证更改
docker info | grep "Docker Root Dir"

# 8. 确认服务正常后删除备份(谨慎操作)
# sudo rm -rf /var/lib/docker.bak

第二部分:Nginx 挂载案例

# 1. 创建目录结构(使用变量更灵活)
NGINX_DATA_DIR="/home/gao/data/nginx"
sudo mkdir -p ${NGINX_DATA_DIR}/{html,conf,logs}
sudo chown -R $USER:$USER ${NGINX_DATA_DIR}

# 2. 获取默认配置(使用一次性容器避免残留)
docker run --rm \
  --name nginx_temp \
  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.26.3 \
  sh -c "tar -czf - -C /etc/nginx ." | tar -xzf - -C ${NGINX_DATA_DIR}/conf

# 3. 创建测试页面(添加更多内容)
cat > ${NGINX_DATA_DIR}/html/index.html <<EOF
<!DOCTYPE html>
<html>
<head>
    <title>Welcome to Nginx</title>
    <style>
        body { width: 800px; margin: 20px auto; font-family: Arial, sans-serif; }
    </style>
</head>
<body>
    <h1>Hello Nginx!</h1>
    <p>Served from Docker container with mounted volumes</p>
    <p>Host directory: ${NGINX_DATA_DIR}</p>
</body>
</html>
EOF

# 4. 启动正式容器(添加重启策略和时区)
docker run -d \
  --name my_nginx \
  --restart unless-stopped \
  -p 8088:80 \
  -v ${NGINX_DATA_DIR}/html:/usr/share/nginx/html \
  -v ${NGINX_DATA_DIR}/conf:/etc/nginx \
  -v ${NGINX_DATA_DIR}/logs:/var/log/nginx \
  -e TZ=Asia/Shanghai \
  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.26.3

# 5. 检查容器状态(格式化输出)
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}"

# 6. 测试访问(带HTTP状态码检查)
curl -I http://localhost:8088

相关文章:

  • SQL语言的物联网数据分析
  • 多语言电商系统:外贸货源共享系统的本土化实践
  • java后端对时间进行格式处理
  • Codeforces Round 1000 (Div. 2)
  • 激光干涉仪学习
  • mac 卸载流氓软件安全助手
  • TypeScript 中的 infer 关键字用途
  • C++11QT复习 (十六)
  • C++继承完全指南:从语法到设计模式----图解原理+工业级代码示例+陷阱规避
  • mnggiflab-gif压缩功能更新
  • C++学习之本地套接字libevent
  • C++ :特殊类设计
  • 空值处理操作符
  • 如何深刻理解Reactor和Proactor
  • MySQL学习笔记四
  • 城电科技 | 太阳能花怎么选择?光伏太阳花的应用场景在哪里?
  • 用 HTML、CSS 和 jQuery 打造多页输入框验证功能
  • ES:geoip_databases
  • AWS SNS深度解析:构建高可用、可扩展的云原生消息通信解决方案
  • 基于Java的人脸识别在线考试系统(jsp+springboot+mysql8.x)
  • 动态网站结构/网站seo优化推广外包
  • 西安市建设局网站/广州aso优化公司 有限公司
  • 重庆网站建设夹夹虫公司.可信/正安县网站seo优化排名
  • 苏州党员两学一做网站/优书网
  • 广州最新疫情公布/今日头条搜索优化怎么做
  • 公司网站有收录没排名/销售怎么做