跳转到内容
无痕工具库 无痕工具库

Hostinger Docker 管理器常见问题排查教程

虽然 Docker 管理器简化了容器部署,但你偶尔仍可能遇到一些问题。本指南涵盖了最常见的问题及其解决方案,帮助你快速解决部署或运行时的问题。

注意

如何访问部署日志

在排查问题之前,首先需要了解如何访问详细的部署日志:

  1. 点击右上角的 Web Console(网页控制台)按钮

  2. 查看项目的构建日志:

    cat /docker/[project-name]/.build.log

    将 [project-name] 替换为你的实际项目名称

  3. 检查输出中的错误消息或警告

这些日志包含有关镜像拉取、容器创建和启动过程的宝贵信息。

常见部署问题

问题 1:“端口已被占用”错误

症状:部署失败,并显示端口冲突的消息

解决方案:

  1. 检查哪些端口正在被使用:

    sudo netstat -tlnp
  2. 你可以:

    • 在配置中选择其他端口
    • 停止冲突的服务
    • 修改端口映射(例如,将 80:80 改为 8080:80)

问题 2:“找不到镜像”错误

症状:Docker 无法拉取指定的镜像

解决方案:

  1. 验证镜像名称和标签:

    • 正确格式:image:tag(例如 nginx:latest)
    • 检查是否有拼写错误
  2. 确保该镜像存在于 Docker Hub 或指定的镜像仓库中

  3. 对于私有镜像,请确保已配置身份验证

问题 3:容器启动后立即停止

症状:容器显示为 “Exited”(已退出)或不断重启

解决方案:

  1. 通过网页控制台检查容器日志:

    docker logs [container-name]
  2. 常见原因:

    • 缺少环境变量
    • 启动命令不正确
    • 应用程序在启动时崩溃
  3. 验证是否设置了所有必需的环境变量

  4. 检查应用程序是否需要特定的文件权限

常见运行时问题

问题 4:无法通过浏览器访问应用程序

症状:应用程序似乎正在运行,但网页浏览器显示连接错误

解决方案:

  1. 验证端口映射是否正确:

    • 检查是否使用的是 VPS 端口,而不是容器端口
    • URL 格式:http://your-vps-ip:vps-port
  2. 检查防火墙规则:

    sudo ufw status
  3. 确保应用程序正在监听正确的接口(0.0.0.0,而不是 localhost)

问题 5:容器内存不足

症状:容器因 “OOMKilled” 状态而崩溃,或应用程序变得无响应

解决方案:

  1. 检查容器资源使用情况:

    docker stats [container-name]
  2. 通过控制面板监控 VPS 资源

  3. 可以考虑:

    • 升级你的 VPS 主机方案
    • 优化你的应用程序
    • 在 compose 文件中设置内存限制

问题 6:容器重启后持久化数据丢失

症状:容器更新后数据库或上传的文件消失

解决方案:

  1. 确保你已正确配置卷(volume):

    • 格式:/host/path:/container/path
    • 在主机上使用绝对路径
  2. 检查卷权限:

    ls -la /path/to/volume
  3. 验证卷是否已正确挂载:

    docker inspect [container-name] | grep -A 10 Mounts

配置问题

问题 7:无效的 YAML 语法

症状:部署失败并出现解析错误

解决方案:

  1. 使用 YAML 预览面板来发现问题

  2. 常见的 YAML 错误:

    • 缩进不正确(使用空格,不要使用制表符)
    • 键后缺少冒号
    • 值周围的引号使用不当
  3. 在部署之前使用在线工具验证你的 YAML

问题 8:环境变量不起作用

症状:应用程序找不到配置值

解决方案:

  1. 检查环境变量格式:

    • 正确:KEY=value
    • 等号前后不要有空格
  2. 对于多行值,使用正确的 YAML 语法:

    environment:
    - KEY=value
    - MULTILINE_KEY=|
    line1
    line2
  3. 在容器内进行验证:

    docker exec [container-name] env

网络问题

问题 9:容器之间无法通信

症状:多容器应用程序无法相互连接

解决方案:

  1. 确保容器位于同一个 compose 项目中

  2. 使用服务名称进行内部通信:

    • 错误:localhost:3306
    • 正确:mysql:3306(其中 mysql 是服务名称)
  3. 检查容器是否位于同一网络中:

    docker network ls docker inspect [network-name]

问题 10:DNS 解析问题

症状:容器无法解析外部域名

解决方案:

  1. 检查 DNS 配置:

    docker exec [container-name] cat /etc/resolv.conf
  2. 测试 DNS 解析:

    docker exec [container-name] nslookup google.com
  3. 如有需要,在 compose 文件中配置自定义 DNS 服务器

性能问题

问题 11:容器启动缓慢

症状:容器启动时间异常长

解决方案:

  1. 检查镜像是否已在本地缓存:bash

    docker images
  2. 在拉取镜像期间监控下载速度

  3. 考虑使用更小的基础镜像(例如 alpine 变体)

  4. 确保你的 VPS 拥有足够的资源

问题 12:应用程序运行缓慢

症状:应用程序有响应但性能不佳

解决方案:

  1. 监控资源使用情况:bash

    docker stats htop
  2. 检查是否存在:

    • CPU 限流
    • 内存交换(swapping)
    • 磁盘 I/O 瓶颈
  3. 优化你的应用程序或升级 VPS 资源

调试命令速查表

通过网页控制台执行这些命令:

# View all containers
docker ps -a
# Check container logs
docker logs [container-name] --tail 50 -f
# Access container shell
docker exec -it [container-name] /bin/sh
# View deployment logs
cat /docker/[project-name]/.build.log
# Check system resources
free -h
df -h
top
# Inspect container configuration
docker inspect [container-name]
# View Docker daemon logs
journalctl -u docker -n 100

避免问题的最佳实践

  1. 先在本地测试:在部署到 VPS 之前先在本地机器上测试
  2. 从简单配置入手:先部署单个容器,再扩展到多容器配置
  3. 使用版本标签:指定确切的版本,而不是使用 latest
  4. 监控资源:随时关注 VPS 资源使用情况
  5. 定期备份:备份你的卷和配置
  6. 记录更改:跟踪哪些配置适合你的环境

请记住,大多数 Docker 管理器问题都有简单的解决方案。从部署日志入手,然后逐步完成相关的排查步骤。

其他资源