跳到主要内容

管理和自定义容器

:::caution[Disclaimer]

本页旨在帮助各个技能水平的用户充分利用在 Unraid OS 上的 Docker 容器。这些提示和最佳实践来自 Unraid 团队,确保符合大多数用户的需求。然而,请记住,Docker 在不断发展,因此对于最新功能、高级配置或超出 Unraid 覆盖范围的问题排查,通常建议查阅官方 Docker 文档

:::

在 Unraid 中自定义 Docker 容器之前,了解基本的配置选项是很有帮助的。每个容器模板提供了一个用户友好的界面,用于设置网络、存储和环境变量,让您无需使用复杂的命令行工具即可定制容器的行为,以满足您的需求。

Unraid 支持多种 Docker 网络模式。您选择的网络类型决定了容器与其他设备和容器的通信方式:

  • 桥接 (默认): 容器位于一个内部的 Docker 网络中。只有您明确映射的端口才能从 Unraid 服务器或局域网访问。这是大多数应用程序最安全且最常用的选项。

  • 主机: 容器共享 Unraid 服务器的网络堆栈。它可以使用任何可用的端口,但必须确保端口不会与其他服务冲突。只有在应用程序需要直接网络访问时才使用此模式。

  • 无: 容器没有网络访问权限。可用于不需要任何网络连接的隔离工作负载。

  • 自定义(macvlan/ipvlan): 容器在局域网上分配自己的 IP 地址,使其显示为一个独立的设备。这适用于高级场景,但可能需要在网络环境中进行额外配置。

提示

容器模板中指定的默认网络类型推荐给大多数用户。

Wi-Fi 和 Docker 网络限制

Docker 有一个限制,阻止它参与共享同一子网的两个网络。如果您在有线和无线连接之间切换,则需要重新启动 Docker 并重新配置所有现有容器以使用新接口。此网络配置更改需要容器重新配置。

创建和启动容器

一旦配置了容器的网络、卷映射、端口映射和环境变量,您就可以创建并启动 Docker 容器了。本节将指导您完成创建过程,解释如何管理启动顺序和依赖关系,并提供先进的启动定制化技巧。

创建一个容器

查看容器模板中的配置设置后:

  1. 单击 创建 开始下载并设置容器。
    • 在过程完成前请避免关闭浏览器窗口或导航到其他页面。
    • 新存储库的首次下载可能比后续下载耗时更长。
  2. 完成后,单击 完成 返回 Docker 页面,您可以管理或添加更多容器。

规划启动顺序

某些容器依赖于其他容器才能正确运行。例如,一个应用程序可能需要首先运行一个数据库容器,或某个服务可能需要在启动之前激活一个VPN 容器。

Plan 您的启动
  • 识别提供核心服务的容器(如数据库、VPNs 或存储网关)。
  • 确保依赖容器仅在其前提条件启动并准备好后才启动。
  • 查看每个容器的文档以了解特定的启动要求。

高级容器启动

Unraid 为您提供灵活的控制,允许您选择哪些容器自动启动及启动的顺序。这对于有依赖于其他容器的情况尤其有用(例如一个数据库或 VPN 服务)。

确保在 array 启动时自动启动容器:

  1. WebGUIDocker 选项卡上,
  2. 切换 自动启动 开关到 为每个您希望自动启动的容器。

自定义启动顺序和延迟

默认情况下,Unraid 会尽可能快地按 Docker 选项卡上的顺序启动所有自动启动容器。您可以自定义此顺序并在容器启动之间添加等待时间:

  1. Docker 选项卡上,使用挂锁图标解锁容器列表。
  2. 通过拖放容器来重新排列其顺序。
  3. 使用顶部右侧的切换按钮切换到 高级视图
  4. AutoStart 列中,为任何需要额外时间的容器在 wait 字段输入等待时间(以秒为单位),以便下一个容器启动。
    • 使用试错为您的设置确定最佳的等待时间。
提示

设置正确的顺序和等待时间对于依赖其他服务的容器尤其重要(例如,在启动使用它的应用之前启动数据库,或在依赖应用之前启动 VPN)。

测试启动顺序

虽然 Unraid 没有专门的“测试启动序列”功能,但您可以模拟并验证您的启动顺序:

  1. Docker 选项卡上停止所有容器。
  2. 以您计划的顺序手动启动每个容器,使用 启动 按钮。
  3. 监测容器日志和应用程序行为以确保满足依赖性并按预期初始化服务。
  4. 根据需要调整启动顺序或等待时间。
important

在更改容器依赖关系或添加新服务后测试启动顺序,尤其是在设置依赖于特定启动时序时。


控制您的容器

一旦您创建并启动了 Docker 容器,通过 WebGUI 管理它非常简单。本指南将指导您使用上下文菜单,了解容器健康指示器,并在容器内访问卷映射。

要访问容器的上下文菜单,请转到 Docker仪表板选项卡,然后单击要管理的容器图标。此菜单提供快速访问常见操作的方法:

Docker Guide - Controlling

选项描述
WebUI在新的浏览器选项卡中打开容器的网页界面(如有)。
控制台打开一个命令行界面以直接与容器交互。
停止停止正在运行的容器。
暂停暂停容器,临时停止所有进程。
重启重启容器,应用任何配置更改。
日志显示容器的日志输出以进行故障排查。
编辑更改容器设置,如端口或卷映射。更改在保存后立即生效。
移除删除容器。您可以选择仅删除容器或同时删除其镜像。
项目页面打开容器的项目页面以获取文档和支持。
支持提供对容器支持资源和的帮助访问。
更多信息显示关于容器及其配置的更多信息。

健康指示器

您将在每个容器的图标旁找到一个彩色健康指示器:

  • 🟢 健康: 表示容器正在运行并按预期响应。
  • 🟡 不健康:容器正在运行但未通过健康检查。检查日志或容器设置以获取更多信息。
  • 无健康检查:这意味着没有为容器配置健康检查。对于许多应用程序来说,这很常见,并不一定是个问题。
备注

健康检查由容器作者定义,可能不适用于所有镜像。


容器内的卷映射

通过 Web 界面配置应用程序时,引用在配置期间设置的容器路径 -

例如,如果您将主机上的 /mnt/user/media 映射到容器中的 /unraid_media,您应该在应用程序的设置中使用 /unraid_media

示例场景

以下是一些展示常见路径映射配置的示例,是用户在设置 Docker 容器时经常需要的。它们展示了如何在 Unraid 的主机文件系统路径与容器的内部路径之间进行转换,帮助您正确配置应用程序。

  • 媒体服务器: 主机路径:/mnt/user/media
    容器路径:/unraid_media

    在应用程序中,将您的媒体库位置设置为 /unraid_media

  • Appdata 存储: 主机路径:/mnt/user/appdata/myapp
    容器路径:/config

    在应用程序中,使用 /config 作为配置存储。

  • Multiple user shares: Host path: /mnt/user/media → Container path: /media
    Host path: /mnt/user/data → Container path: /data

    在应用程序中根据需要参考 /media/data

Best 实践

始终使用允许容器正常工作的最严格访问模式(只读或读/写)。


调度启动和停止

Unraid 不原生支持 Docker 容器的计划启动或停止操作,但您可以使用用户脚本插件轻松自动化此过程。这个强大的工具允许您按计划运行自定义脚本,从而实现对容器的自动控制。

用户脚本插件

用户脚本插件允许您直接从 WebGUI 创建、管理、和安排自定义 shell 脚本。您可以将其用于各种自动化任务,如启动或停止容器、备份数据或运行维护例程。

  • 如果尚未安装插件,请从应用选项卡安装。
  • 通过 设置 → 用户脚本 访问它来创建和管理您的脚本。

要了解更多关于插件的信息,请查看插件

计划容器操作

要按计划自动启动或停止您的容器:

  1. 应用程序 标签安装 用户脚本插件
  2. 导航至 设置→用户脚本
  3. 为每个独特的计划创建一个新脚本。如果多个容器共享相同的计划,您可以在单个脚本中包含它们的命令。
  4. 使用下拉菜单设置计划,或使用自定义 cron 表达式以获取更高级的定时选项。
  5. 点击 应用 保存并激活您的脚本。
提示

Cron 表达式使得计划安排更加灵活,超越内置选项。例如,0 3 * * 1 会在每周一凌晨 3:00 运行您的脚本。

命令示例

要启动一个容器,使用命令:

docker start "container-name"

"container-name" 替换为在 Docker 标签中显示的实际名称。

提示

您可以在 Docker 标签中或通过查看容器的配置屏幕中的 docker run 命令找到容器名称。