管理和自定义容器
This page is written to help users of all skill levels make the most out of Docker containers on Unraid OS. The tips and best practices come from the Unraid team, who ensure they are tailored to most users' needs. However, keep in mind that Docker is constantly evolving, so for the most up-to-date features, advanced configurations, or troubleshooting issues that go beyond what Unraid covers, it's always a good idea to check the official Docker documentation.
Before customizing a Docker container in Unraid, it’s helpful to understand the basic configuration options. Each container template provides a user-friendly interface for setting up networking, storage, and environment variables, allowing you to tailor the container's behavior to your needs without using complex command-line tools.
- 网络类型
- 卷映射
- 端口映射
- 环境变量
Unraid 支持多种 Docker 网络模式。您选择的网络类型决定了容器与其他设备和容器的通信方式:
-
桥接 (默认): 容器位于一个内部的 Docker 网络中。只有您明确映射的端口才能从 Unraid 服务器或局域网访问。这是大多数应用程序最安全且最常用的选项。
-
主机: 容器共享 Unraid 服务器的网络堆栈。它可以使用任何可用的端口,但必须确保端口不会与其他服务冲突。只有在应用程序需要直接网络访问时才使用此模式。
-
无: 容器没有网络访问权限。可用于不需要任何网络连接的隔离工作负载。
-
自定义(macvlan/ipvlan): 容器在局域网上分配自己的 IP 地址,使其显示为一个独立的设备。这适用于高级场景,但可能需要在网络环境中进行额外配置。
容器模板中指定的默认网络类型推荐给大多数用户。
Docker 有一个限制,不能参与共享同一子网的两个网络。如果您在有线和无线连接之间切换,您将需要重启 Docker 并重新配置所有现有的容器以使用新接口。此网络配置更改需要容器重新配置。
Volume mappings control how your container accesses files on your Unraid server. Each mapping links a folder inside the container (container path) to a folder on your Unraid server (host path).
- 容器路径: 容器内部的目录(例如,
/config
或/unraid_media
)。 - 主机路径: 您 Unraid 服务器上的目录(例如,
/mnt/user/appdata/myapp
)。 - 访问模式: 控制权限 - 只读或读/写。使用仍能使容器正常工作的最严格模式。
将应用数据(设置、库等)存储在容器外,一般在 appdata
user share 中。这种 共享管理 方法能在更新或重新安装时保持数据安全。
- 路径区分大小写。
- 容器路径应以
/
开头。 - 如果使用未分配的设备作为主机路径,请将访问模式设置为“Slave”选项以确保正确检测。
- 如果主机路径在容器启动时不存在,则会自动创建。
- 服务器上出现的意外文件夹可能表明映射配置错误。
端口映射决定了网络流量如何从 Unraid 服务器路由到容器。
-
桥接网络: 您可以将内部容器端口映射到不同的主机端口。例如,如果三个容器内部使用端口8000,您可以将它们分别映射到主机上的8000、8001和8002。
-
主机网络: 容器可以使用任何可用端口。避免在多个容器中使用相同的端口以防止冲突。
仅修改主机端口值。除非您知道应用程序支持,否则不要更改容器端口。
大多数模板提供合理的默认值,但您可以添加或调整端口映射。
环境变量可以定制您 Docker 容器在运行时的行为。它们允许您传递键值对,您的容器化应用程序可以读取并利用这些信息。
环境变量的常见用途
- 设置时区
- 配置用户和组ID
- 指定语言偏好
- 调整应用程序特定设置,例如 API 密钥或功能切换
在 WebGUI 中管理环境变量
- 您可以在容器的配置屏幕通过 WebGUI 添加、编辑或删除环境变量。
- 许多容器模板已经预设了一些常用环境变量,但如果需要,您可以随时添加更多。
- 务必检查特定应用程序的文档以了解可用的环境变量及其有效值。
TZ=America/New_York
: 这会设置容器的时区。PUID=99
和PGID=100
: 这些设置文件权限的用户和组 ID。UMASK=022
: 这控制新创建文件的默认文件权限。API_KEY=your_api_key_here
: 这可以用于应用程序进行外部服务的身份验证。
使用环境变量可以避免在容器镜像中硬编码敏感或环境特定的信息。此做法增强了容器的可移植性和安全性。
创建和启动容器
配置完容器的网络、卷映射、端口映射和环境变量后,您就可以创建并启动Docker容器。本节将指导您完成创建过程,解释如何管理启动顺序和依赖关系,并提供高级启动自定义的提示。
创建一个容器
查看容器模板中的配置设置后:
- 单击 创建 开始下载并设置容器。
- 在过程完成前请避免关闭浏览器窗口或导航到其他页面。
- 新存储库的首次下载可能比后续下载耗时更长 。
- 完成后,单击 完成 返回 Docker 页面,您可以管理或添加更多容器。
规划启动顺序
某些容器需要依赖其他容器才能正常运行。例如,一个应用程序可能需要一个先运行的数据库容器,或者一个服务可能需要一个VPN容器在之前激活。
- 识别提供核心服务的容器(如数据库、VPNs 或存储网关)。
- 确保依 赖容器仅在其前提条件启动并准备好后才启动。
- 查看每个容器的文档以了解特定的启动要求。
高级容器启动
Unraid gives you flexible control over which containers start automatically and in what order. This is especially useful if you have containers that depend on others (such as a database or VPN service).
确保在 array 启动时自动启动容器:
- 在 WebGUI 的 Docker 选项卡上,
- 切换 自动启动 开关到 开 为每个您希望自动启动的容器。