跳到主要内容

Docker Apps

Creating and Submitting Docker Apps

Docker apps are defined by XML template files that specify the container's configuration, such as ports, volumes, environment variables, and metadata.

Step 1: Create the Docker Template XML

  1. Go to the Docker tab and select Add Container.
  2. Fill in the details based on your Docker image (e.g., from Docker Hub):
    • Repository: The Docker image name (e.g., domistyle/idrac6).
    • Network Type: Typically bridge.
    • Privileged: Set to true only if necessary (e.g., for hardware access).
    • Add ports, volumes, and variables using Add another Path, Port, Variable or Device.
      • Ports: Use container ports (e.g., 5800 for WebUI). Set Host Port to blank or optional.
      • Volumes/Paths: Use container paths (e.g., /config); avoid host paths to prevent auto-creating shares.
      • Variables: Define keys (e.g., IDRAC_HOST), defaults, and descriptions.
    • WebUI: Use format like http://[IP]:[PORT:5800] to dynamically map host ports.
    • Icon: URL to a PNG or JPG image (host on GitHub for reliability).
    • Overview/Description: Provide a clear, Markdown-formatted summary (no HTML).
    • Category: Select from official options (e.g., Tools: Network:Management).
    • Support: Link to your Unraid forums support thread.
    • Project: Link to the project's GitHub or webpage.
  3. Click Save to generate the XML. Copy it from the displayed text (in Authoring Mode).
  4. Clean the XML:
    • Remove unnecessary tags (e.g., empty <MyIP/>, <DateInstalled>).
    • Use <Config> elements for ports, volumes, and variables (v2 format preferred over legacy v1 sections like <Data> or <Environment>).
    • Ensure no HTML tags; use Markdown for formatting.

Example cleaned XML for a sample app:

<?xml version="1.0"?>
<Container version="2">
<Name>idrac6</Name>
<Repository>domistyle/idrac6</Repository>
<Registry>https://hub.docker.com/r/domistyle/idrac6/</Registry>
<Network>bridge</Network>
<Privileged>false</Privileged>
<Support>https://github.com/DomiStyle/docker-idrac6/issues</Support>
<Project>https://github.com/DomiStyle/docker-idrac6/</Project>
<Overview>Allows access to the iDRAC 6 console without installing Java or messing with Java Web Start. Java is only run inside of the container and access is provided via web interface or directly with VNC.</Overview>
<Category>Tools: Network:Management</Category>
<WebUI>http://[IP]:[PORT:5800]</WebUI>
<Icon>https://raw.githubusercontent.com/user/repo/master/icon.png</Icon>
<ExtraParams/>
<PostArgs/>
<Config Name="idrac host" Target="IDRAC_HOST" Default="" Mode="" Description="Host for your iDRAC instance." Type="Variable" Display="always" Required="true" Mask="false"/>
<!-- Additional <Config> elements for other variables, ports, and paths -->
</Container>

Step 2: Test the Template

  • Install the container on your Unraid system using the template.
  • Verify ports, volumes, and variables work as expected.
  • Check for errors in CA's Statistics section (e.g., template errors or invalid templates).

Step 3: Host the Template on GitHub

  • Create a new GitHub repository (use "master" or "main" branch).
  • Upload the XML file (name it descriptively, e.g., my-app.xml).
  • Optionally, add a developer profile with ca_profile.xml in the repo root for enhanced visibility in CA searches.

Example ca_profile.xml:

<?xml version="1.0" encoding="utf-8"?>
<Maintainer>
<Icon>https://raw.githubusercontent.com/user/repo/master/avatar.jpg</Icon>
<Profile>Creating Docker containers with a focus on simplicity and auto-updates.</Profile>
<DonateLink>https://www.paypal.me/user</DonateLink>
<DonateText>Support my work with a donation.</DonateText>
<Forum>https://forums.unraid.net/topic/your-support-thread/</Forum>
</Maintainer>

Step 4: Submit to Community Applications

  1. Create a support thread on the Unraid forums.
  2. Fill out the online submission form: CA Submission Form.
  3. Provide your GitHub repo URL, support thread link, and other details.
  4. Moderators review the submission (may request fixes). Approved templates appear in CA within ~2 hours.
  5. For updates, push changes to GitHub; CA syncs automatically every 2 hours.