admin管理员组

文章数量:1130349

在 Armbian 系统上更改 Docker 的默认存储设置(默认存储路径为 /var/lib/docker),通常是为了将容器、镜像等数据存储到其他位置(如挂载到 /ssd 的 SATA 硬盘,以节省 eMMC 空间或提高性能)。以下是详细的中文教程,指导您在 Armbian 上修改 Docker 的默认存储路径,适用于包括网心云 OEC-Turbo 等 ARM 设备。教程假设您已成功安装 Docker,并以 root 权限操作(使用 sudo su 或直接 root 用户)。


前提条件

  • Docker 已安装:运行 docker --version 确认 Docker 已正常工作。
  • 目标存储路径:假设您想将 Docker 数据存储到 /ssd/docker(SATA 硬盘已挂载到 /ssd,如之前的教程配置)。
  • 磁盘空间:确保目标路径(如 /ssd)有足够空间(建议至少 10GB 可用,运行 df -h /ssd 检查)。
  • 备份:更改存储路径可能导致数据丢失,建议备份现有 Docker 数据(/var/lib/docker)。
  • 权限:确保目标路径对 Docker 服务有读写权限。

步骤 1:停止 Docker 服务

更改存储路径前,必须停止 Docker 服务以避免数据冲突:

systemctl stop docker
systemctl stop docker.socket
  • 验证服务已停止:
    systemctl status docker
    

步骤 2:创建新存储目录

假设您希望将 Docker 数据存储到 /ssd/docker,创建目录并设置权限:

mkdir -p /ssd/docker
chown -R 1000:1000 /ssd/docker
chmod -R 755 /ssd/docker
  • 说明:Docker 默认使用 1000:1000 UID/GID 运行(视系统配置可能不同)。确保目录权限正确。

步骤 3:迁移现有 Docker 数据(可选)

如果您有现有的 Docker 数据(如镜像、容器),需要迁移到新路径:

  1. 备份当前 Docker 数据:
    cp -a /var/lib/docker /ssd/docker.bak
    
  2. 移动数据到新路径:
    mv /var/lib/docker/* /ssd/docker/
    
    • 如果 /var/lib/docker 为空(新安装),可跳过此步骤。

步骤 4:配置 Docker 使用新存储路径

Docker 的存储路径通过配置文件 /etc/docker/daemon.json 指定。

  1. 编辑或创建 daemon.json

    mkdir -p /etc/docker
    nano /etc/docker/daemon.json
    
  2. 添加或修改以下内容,指定新存储路径并保留国内镜像加速器(参考之前教程):

    {
      "data-root": "/ssd/docker",
      "registry-mirrors": [
        "https://registry.docker-cn",
        "https://mirrors.tencentyun",
        "https://docker.mirrors.ustc.edu",
        "https://hub-mirror.c.163"
      ]
    }
    
    • "data-root":指定 Docker 的数据存储路径为 /ssd/docker
    • 保存并退出(Ctrl+O, Enter, Ctrl+X)。
  3. 验证配置文件语法:

    cat /etc/docker/daemon.json
    

步骤 5:启动 Docker 并验证

  1. 重启 Docker 服务:

    systemctl daemon-reload
    systemctl start docker
    systemctl enable docker
    
  2. 确认 Docker 使用新路径:

    docker info --format '{{.DockerRootDir}}'
    
    • 应输出 /ssd/docker
  3. 测试 Docker 功能:

    docker run hello-world
    
    • 确保输出包含 “Hello from Docker!”。
  4. 检查存储路径:

    ls -l /ssd/docker
    
    • 应看到 Docker 的子目录(如 containersimagesvolumes)。

步骤 6:清理旧数据(可选)

如果迁移成功且确认新路径正常工作,可删除旧数据以释放空间:

rm -rf /var/lib/docker/*
  • 警告:确保 /ssd/docker 已包含所有必要数据后再删除,避免丢失镜像或容器。

故障排查

  • Docker 服务无法启动

    • 查看日志:
      journalctl -u docker
      
    • 可能原因:新路径权限错误(检查 chownchmod)、磁盘空间不足(df -h /ssd)、daemon.json 语法错误。
    • 修复权限:
      chown -R 1000:1000 /ssd/docker
      chmod -R 755 /ssd/docker
      
  • 数据未正确迁移

    • 恢复备份:
      mv /ssd/docker.bak/* /var/lib/docker/
      
    • 移除 data-root 配置,重启 Docker 后重新尝试。
  • 磁盘挂载问题

    • 确保 /ssd 已正确挂载(参考之前的挂载教程):
      df -h /ssd
      
    • 确认 /etc/fstab 包含 /ssd 的自动挂载条目,避免重启后路径不可用。
  • 存储空间不足

    • 检查 /ssd 剩余空间:
      df -h /ssd
      
    • 如果空间不足,清理无用文件或扩展硬盘。

针对网心云 OEC-Turbo 的注意事项

  • ARM 架构:OEC-Turbo 使用 aarch64(arm64),确保 Docker 镜像和配置兼容。
  • SATA 硬盘性能:将 Docker 数据存储到 SATA 硬盘(如 /ssd)可提高性能,但需确保硬盘已正确挂载到 /ssd(参考之前教程)。
  • eMMC 空间:默认 /var/lib/docker 位于 eMMC,空间有限(通常 8GB 或 16GB)。迁移到 /ssd 可避免 eMMC 空间耗尽。
  • 重启稳定性:确认 /etc/fstab 已设置 SATA 硬盘自动挂载,否则重启后 /ssd/docker 可能不可用,导致 Docker 启动失败。

验证和后续

  • 验证存储路径:运行 docker info --format '{{.DockerRootDir}}' 确认路径为 /ssd/docker
  • 测试容器:部署一个简单服务(如 Nginx)验证:
    docker run -d -p 80:80 nginx
    
    • 在浏览器访问 http://<设备IP>,应看到 Nginx 欢迎页面。
  • 监控存储:定期检查 /ssd/docker 的磁盘使用情况:
    du -sh /ssd/docker
    

完成以上步骤后,Docker 的默认存储路径将成功更改到 /ssd/docker,并继续使用国内镜像加速器以提高拉取速度。如有问题,可查看以下信息以便诊断:

docker info --format '{{.DockerRootDir}}'
journalctl -u docker
df -h /ssd
cat /etc/docker/daemon.json

在 Armbian 系统上更改 Docker 的默认存储设置(默认存储路径为 /var/lib/docker),通常是为了将容器、镜像等数据存储到其他位置(如挂载到 /ssd 的 SATA 硬盘,以节省 eMMC 空间或提高性能)。以下是详细的中文教程,指导您在 Armbian 上修改 Docker 的默认存储路径,适用于包括网心云 OEC-Turbo 等 ARM 设备。教程假设您已成功安装 Docker,并以 root 权限操作(使用 sudo su 或直接 root 用户)。


前提条件

  • Docker 已安装:运行 docker --version 确认 Docker 已正常工作。
  • 目标存储路径:假设您想将 Docker 数据存储到 /ssd/docker(SATA 硬盘已挂载到 /ssd,如之前的教程配置)。
  • 磁盘空间:确保目标路径(如 /ssd)有足够空间(建议至少 10GB 可用,运行 df -h /ssd 检查)。
  • 备份:更改存储路径可能导致数据丢失,建议备份现有 Docker 数据(/var/lib/docker)。
  • 权限:确保目标路径对 Docker 服务有读写权限。

步骤 1:停止 Docker 服务

更改存储路径前,必须停止 Docker 服务以避免数据冲突:

systemctl stop docker
systemctl stop docker.socket
  • 验证服务已停止:
    systemctl status docker
    

步骤 2:创建新存储目录

假设您希望将 Docker 数据存储到 /ssd/docker,创建目录并设置权限:

mkdir -p /ssd/docker
chown -R 1000:1000 /ssd/docker
chmod -R 755 /ssd/docker
  • 说明:Docker 默认使用 1000:1000 UID/GID 运行(视系统配置可能不同)。确保目录权限正确。

步骤 3:迁移现有 Docker 数据(可选)

如果您有现有的 Docker 数据(如镜像、容器),需要迁移到新路径:

  1. 备份当前 Docker 数据:
    cp -a /var/lib/docker /ssd/docker.bak
    
  2. 移动数据到新路径:
    mv /var/lib/docker/* /ssd/docker/
    
    • 如果 /var/lib/docker 为空(新安装),可跳过此步骤。

步骤 4:配置 Docker 使用新存储路径

Docker 的存储路径通过配置文件 /etc/docker/daemon.json 指定。

  1. 编辑或创建 daemon.json

    mkdir -p /etc/docker
    nano /etc/docker/daemon.json
    
  2. 添加或修改以下内容,指定新存储路径并保留国内镜像加速器(参考之前教程):

    {
      "data-root": "/ssd/docker",
      "registry-mirrors": [
        "https://registry.docker-cn",
        "https://mirrors.tencentyun",
        "https://docker.mirrors.ustc.edu",
        "https://hub-mirror.c.163"
      ]
    }
    
    • "data-root":指定 Docker 的数据存储路径为 /ssd/docker
    • 保存并退出(Ctrl+O, Enter, Ctrl+X)。
  3. 验证配置文件语法:

    cat /etc/docker/daemon.json
    

步骤 5:启动 Docker 并验证

  1. 重启 Docker 服务:

    systemctl daemon-reload
    systemctl start docker
    systemctl enable docker
    
  2. 确认 Docker 使用新路径:

    docker info --format '{{.DockerRootDir}}'
    
    • 应输出 /ssd/docker
  3. 测试 Docker 功能:

    docker run hello-world
    
    • 确保输出包含 “Hello from Docker!”。
  4. 检查存储路径:

    ls -l /ssd/docker
    
    • 应看到 Docker 的子目录(如 containersimagesvolumes)。

步骤 6:清理旧数据(可选)

如果迁移成功且确认新路径正常工作,可删除旧数据以释放空间:

rm -rf /var/lib/docker/*
  • 警告:确保 /ssd/docker 已包含所有必要数据后再删除,避免丢失镜像或容器。

故障排查

  • Docker 服务无法启动

    • 查看日志:
      journalctl -u docker
      
    • 可能原因:新路径权限错误(检查 chownchmod)、磁盘空间不足(df -h /ssd)、daemon.json 语法错误。
    • 修复权限:
      chown -R 1000:1000 /ssd/docker
      chmod -R 755 /ssd/docker
      
  • 数据未正确迁移

    • 恢复备份:
      mv /ssd/docker.bak/* /var/lib/docker/
      
    • 移除 data-root 配置,重启 Docker 后重新尝试。
  • 磁盘挂载问题

    • 确保 /ssd 已正确挂载(参考之前的挂载教程):
      df -h /ssd
      
    • 确认 /etc/fstab 包含 /ssd 的自动挂载条目,避免重启后路径不可用。
  • 存储空间不足

    • 检查 /ssd 剩余空间:
      df -h /ssd
      
    • 如果空间不足,清理无用文件或扩展硬盘。

针对网心云 OEC-Turbo 的注意事项

  • ARM 架构:OEC-Turbo 使用 aarch64(arm64),确保 Docker 镜像和配置兼容。
  • SATA 硬盘性能:将 Docker 数据存储到 SATA 硬盘(如 /ssd)可提高性能,但需确保硬盘已正确挂载到 /ssd(参考之前教程)。
  • eMMC 空间:默认 /var/lib/docker 位于 eMMC,空间有限(通常 8GB 或 16GB)。迁移到 /ssd 可避免 eMMC 空间耗尽。
  • 重启稳定性:确认 /etc/fstab 已设置 SATA 硬盘自动挂载,否则重启后 /ssd/docker 可能不可用,导致 Docker 启动失败。

验证和后续

  • 验证存储路径:运行 docker info --format '{{.DockerRootDir}}' 确认路径为 /ssd/docker
  • 测试容器:部署一个简单服务(如 Nginx)验证:
    docker run -d -p 80:80 nginx
    
    • 在浏览器访问 http://<设备IP>,应看到 Nginx 欢迎页面。
  • 监控存储:定期检查 /ssd/docker 的磁盘使用情况:
    du -sh /ssd/docker
    

完成以上步骤后,Docker 的默认存储路径将成功更改到 /ssd/docker,并继续使用国内镜像加速器以提高拉取速度。如有问题,可查看以下信息以便诊断:

docker info --format '{{.DockerRootDir}}'
journalctl -u docker
df -h /ssd
cat /etc/docker/daemon.json

本文标签: 路径如何更改Armbiandocker