温馨提示×

centos分区如何进行容器化应用

小樊
32
2025-11-29 23:45:38
栏目: 智能运维

在 CentOS 上容器化应用的磁盘与分区最佳实践

一、前置准备与安装

  • 更新系统并安装依赖:sudo yum update -y && sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  • 添加 Docker 仓库:sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • 安装 Docker 引擎:sudo yum install -y docker-ce docker-ce-cli containerd.io
  • 启动并设置开机自启:sudo systemctl start docker && sudo systemctl enable docker
  • 验证安装:sudo docker run --rm hello-world
  • 可选:安装 Docker Compose(单机多容器编排)以便管理多服务应用。

二、规划容器存储与分区

  • Docker 默认将所有镜像、容器与卷数据存放在 /var/lib/docker。为避免系统盘被占满,建议将 /var/lib/docker 迁移到独立的数据盘或大容量分区。
  • 常见做法:
    • 新增一块磁盘(如 /dev/sdb),创建分区 /dev/sdb1 并格式化为 ext4/xfs
    • 挂载到临时目录(如 /mnt/docker),迁移现有数据,再挂载回 /var/lib/docker
    • 通过 /etc/docker/daemon.json 配置新的数据根目录,使配置永久生效。

三、迁移 Docker 数据目录到新分区

  • 假设新分区为 /dev/sdb1,目标目录为 /var/lib/docker(也可先挂载到 /mnt/docker 再移动):
    1. 分区与格式化
      • sudo fdisk /dev/sdb(新建主分区,保存退出)
      • sudo mkfs.ext4 /dev/sdb1
    2. 挂载新分区
      • sudo mkdir -p /mnt/docker
      • sudo mount /dev/sdb1 /mnt/docker
    3. 停止 Docker 并迁移数据
      • sudo systemctl stop docker
      • sudo rsync -aP /var/lib/docker/ /mnt/docker/
    4. 备份原目录并挂载新分区到目标路径
      • sudo mv /var/lib/docker /var/lib/docker.bak
      • sudo mkdir -p /var/lib/docker
      • sudo mount /dev/sdb1 /var/lib/docker
    5. 配置 Docker 使用新数据根目录
      • 编辑 /etc/docker/daemon.json(如不存在则新建),加入: { “data-root”: “/var/lib/docker” }
      • 注意:若此前挂载到 /mnt/docker,可改为 “data-root”: “/mnt/docker”
    6. 启动 Docker 并验证
      • sudo systemctl start docker
      • docker info | grep “Docker Root Dir” 应显示新路径
      • 运行 sudo docker run --rm hello-world 验证可用性
    7. 确认无误后清理备份
      • sudo rm -rf /var/lib/docker.bak
  • 提示:如系统启用了 SELinux,可能需要 restorecon -R /var/lib/docker 或设置合适的 SELinux 上下文后再启动 Docker。

四、部署示例与数据持久化

  • 运行示例应用(Nginx)
    • 拉取并运行:sudo docker run -d --name web -p 80:80 nginx:latest
    • 验证:curl http://localhost
  • 数据持久化与目录挂载
    • 将宿主机目录挂载到容器内(例如将应用日志或上传目录持久化):
      • sudo mkdir -p /data/myapp
      • sudo docker run -d --name app -v /data/myapp:/app/data myapp:latest
  • 多容器应用建议使用 Docker Compose
    • 示例 docker-compose.yml(节选): version: “3.8” services: web: image: nginx:latest ports: - “80:80” volumes: - ./html:/usr/share/nginx/html app: image: myapp:latest volumes: - /data/myapp:/app/data
    • 启动:docker compose up -d(或 docker-compose up -d)。

五、运行与维护要点

  • 资源与稳定性
    • 为关键容器设置资源限制(如内存/CPU),避免单容器耗尽主机资源;生产环境建议非 root 用户运行容器,并遵循最小权限原则。
  • 存储与日志
    • 镜像与容器层写入默认集中在 /var/lib/docker;结合挂载卷持久化业务数据,避免容器重建导致数据丢失。
    • 定期清理无用资源:docker system prune(谨慎使用 -a 参数),并配置日志轮转,防止日志无限增长。
  • 安全与合规
    • 保持宿主机、Docker 引擎与镜像的定期更新;启用 SELinux/防火墙;对镜像进行安全扫描;必要时使用更细粒度的权限控制(如 capabilities)。
  • 备份与恢复
    • 定期备份 /var/lib/docker(若已迁移,则为新挂载分区)与业务数据卷;变更前先停机、迁移、验证,再切换生产流量。

0