Docker FAQ


Recommended Posts

This thread is reserved for Frequently Asked Questions, concerning all things Docker, their setup, operation, management, and troubleshooting.  Please do not ask for support here, such requests and anything off-topic will be deleted or moved, probably to the Docker FAQ feedback topic.  If you wish to comment on the current FAQ posts, or have suggestions or requests for the Docker FAQ, please put them in the Docker FAQ feedback topic.  Thank you!

Note: I am the author of many of these posts.  But I am not the author of all of them.  Due to circumstances beyond our control, the original postings have been lost, but I took it upon myself to salvage them, with the unfortunate net result that I had to take "ownership" of the posts.  

ANY user can reply to this thread with any new Q/A.  I will add such posts to this table of contents.

 

I need help with an application?  What information should I supply?

 

Getting Started

How do I get started using Docker Containers?

What are the host volume paths and the container paths

Dockers, theres so much to learn!  Are there any guides?

How do I know if I've set up my paths, ports, etc correctly?

With 6.2, do I need to move my appdata and/or docker image into unRaid's recommended shares?

How should I set up my appdata share?

 

General Questions

 

Why doesnt the "Check for Updates" button bring my Docker to the newest version of the application?

How do I update to the newest version of the application?

How do I move or recreate docker.img?

What do I fill out when a blank template appears?

How can I run other docker applications that are not listed within the App tab?

I've told {App-X} to look / move / copy files via SMB to my server. Why doesn't it work?

If I need to delete my docker.img file, will I lose my application's settings, etc?

How do I get a command prompt within a docker application?

How do I increase the size of my docker.img file?

Why does the "EDIT" not appear on the dashboard / docker tab when I click on an icon?

What do I do when I see 'layers from manifest don't match image configuration' during a docker app installation?

How Do I Create My Own Docker Templates?

I've recreated my docker.img file.  How do I re-add all my old apps?

I want to run a container from docker hub, how do I interpret the instructions.

I want to change the port my docker container is running on or I have two containers that want to use the same port, how do I do that?

Why it's important to understand how folder mappings work...  and an example of why it goes wrong.

How do I Stop/Start/Restart Docker via Command Line

How Do I Pass Through A device To A Container?

Can I switch Docker containers, same app, from one author to another?  How do I do it?

For a given application, how do I change Docker containers, to one from a different author or group?

How do I install a second instance of an application?

I closed the transfer window on Krusader. How do I get it back?

How can I use private template repositories with unRaid?

What does "Deprecated" mean?

 

Docker Image Filling Up

 

Why does my docker.img file keep filling up?
Why does my docker.img file keep filling up while using Plex?

My docker.img file is filling up due to excessive logging from various apps

 

Troubleshooting, Maintenance

 

I continually have "Server Execution Errors" whenever I try and start a container

Why don't my Docker Container and VM mappings of remote shares to the local mount point (/mnt/disks) work after updating to 6.9?

How come I get "Execution Error" when trying to start a container?

Why cant (insert docker app name here) see my files mounted on another server or outside the array

Where did my Docker files go?

Why did my files get moved off the Cache drive?

Why does Sonarr keep telling me that it can't import a file downloaded by NZBGet? (Or any other combination of apps?)

How do I limit the CPU resources of a particular docker application?

How do I limit the memory usage of a docker application?

Why do I keep losing my Docker container configurations?

Why did my newly configured Docker just stop working?

Fix Common Problems plugin is complaining about Container Port x not found or changed on installed applications. What do I do?

Fix Common Problems plugin is complaining about UD Mounted paths not mounted with the Slave Option. What do I do?

Why can't I delete / modify files created by CouchPotato (or another docker app)?

Why does a certain docker application always start when booting unRaid when autostart is set off?

Why are some of my applications randomly stopping and won't restart? (unRaid 6.4+ with Unassigned Devices mounting SMB shares)

How do I fix permission issues on file(s) created by Plex DVR?

Why does Unraid keep adding ports that I've removed from the template back to the application when I update?

Why do my remote share mappings fail after I updated UD?

Using private repositories within CA

How do I check my installed apps for vulnerabilities (Log4J etc)?

  • Like 3
  • Thanks 2
  • Upvote 5
Link to comment
  • kizer pinned this topic

How do I get started using Docker containers?

 

First things to read -
* unRAID V6 Manual - has a good conceptual introduction to Dockers and VMs
* LimeTechs Official Docker Guide
* Using Docker - unRAID Manual for v6, guide to creating Dockers
* Later, when you have time, check the other stickied threads here, at the top of the Docker board.

 

First suggestions -
* Turn on Docker support in the Settings page (theres more information in the Upgrading to UnRAID v6 guide).
* Then install the Community Applications plugin, to obtain the entire list of containers, already categorized for you.  You can select the containers you want, and add them from this plugin.
* Next, read this entire FAQ!  This post includes examples of how to set up the appdata folder for the configuration settings of your Docker containers.

  • Upvote 2
Link to comment

Why doesnt the "Check for Updates" button bring my Docker to the newest version of the application?

 

The "Check for Updates" button on the DockerMan page checks if the author of the Docker Container made changes to the container itself, not if the Application itself has an update.  The changes include how it installs your program or other things on the backend.

If the author has built-in a way to update the application (Restarting the docker, in the Web-UI of the Application) it wont show with the "Check for Updates" button.

How do I update to the newest version of the application?
This isnt consistent across every container, but there are a few common ways to do this. The specific way of updating should be spelled out by the author.


Some applications update by stopping the container and restarting it - Example: needos Plex Docker
Some applications update through the built in updater in the WebGUI of the application - Example: smdions Headphone Docker
Some applications are hard coded to a specific version, but allow for a Bleeding Edge install.  This goes out and downloads the newest version. NOTE: Not always guaranteed to work - Example: smdions Beets Docker
This is done by enabling "Advanced View" in the specific docker page (slider in the upper right hand corner) and setting a new Environmental Variable to EDGE=1

  • Upvote 2
Link to comment

 

What are the host volume paths and the container paths

 

Just in case this is too hard to read, if youre reading this part of the FAQ, youre probably going to be best off setting up your docker paths as /mnt mapped to /mnt.  Similar to this:



Untitled_zpsoy38yheg.png
 

Note:  Youll notice throughout this that I talk about "best practice" a lot.  Truth be told the risks associated with violating the best practices are pretty low.

Ive always had a real tough time trying to explain this because it is a confusing issue to try and explain, but trust me that once you understand it will make 100% perfect sense.  

First thing:  Docker Containers are (for all intents and purposes) completely separate from the rest of the unRaid system.  A container has no idea that its running on unRaid (or any other system), and has no concept of any other containers that may also be running.  What this section really needs is a video with lots of arrows, hand waving, etc.  But, this is my best shot at it purely using text.

A container usually needs to access information (either read only or read/write) on the host (unRaid) system.  Because a container is completely separate from the unRaid system we have to tell it what folders (paths) that it has access to.

This is done in the mapping section of the Add Container screen.

There are two parts to every line.  The container volume path and the host path.

The host path is (generally) your shares that you want to give the container access to.  Best practice for containers dictates that if the container only needs access to a Downloads share, that you only create a mapping for the Downloads share.

On the host path this would be something like /mnt/user/Downloads.

On the container path side of things, you tell the container how it should "refer" to the host path.  IE:  If the container path is /Downloads, then when ever you tell the container to save something into /Downloads, docker will then "map" it and actually store it on your unRaid system at /mnt/user/Downloads.

In most cases, it really doesnt matter that much what your host path and container paths are as long as you can get to the data that you want.  Where it begins to matter is if you have multiple containers that need to communicate with each other.  EG: SabNZBD and Sonaar.  In this case, Sab tells Sonaar "I just downloaded a file and stored it in /Downloads" (remember that /Downloads is mapped to /mnt/user/Downloads)

Now, if Sonaar has different mappings (eg:/MyDownloads mapped to /mnt/user/Downloads), then its not going to be able to find the downloaded file because it will be looking in /Downloads for the file (like sab told it to), but that folder (/Downloads) does not exist in the Sonarr container.  

"Best Practice" in this case dictates that both Sab and Sonaar have to have identical matching mappings for the downloads folder.

Heres a thread showing one users issues with this:  http://lime-technology.com/forum/index.php?topic=43337.0

Maybe an easy way to think about this is to compare it to mapping a network drive in windows.  When you map a network drive in windows to something like //tower/MyMovies, windows creates a new drive letter (Z:) and when ever it sees a reference to Z:MyParticularMovie, what it actually does is translate that internally to be //tower/MyMovies/MyParticularMovie.  Docker does the same.  If you map /Downloads to be /mnt/user/Downloads, the container refers to everything as /Downloads, but internally docker substitutes /Downloads/MyParticularMovie to be /mnt/user/Downloads/MyParticularMovie.


In my sample picture above, you will notice that I have a separate /config line.  This is where the docker actually stores its data (not its downloads, or whatever).  This is almost always mapped to /mnt/cache/appdata/dockername.  The template authors have now pretty much settled on using appdata/dockername.  The one big caveat is that the appdata share that you create must be a "cache only" share.  If you do not set it to be cache only, when the mover script comes along every day at 3am, it will move the files from your cache drive to your array.  In the process, permissions on the files will get changed with the net result that your docker application probably will not work correctly the next time you use it.


Confused yet?

An easy work around to this (but not "best practice") is for on the container and host paths to pass through either /mnt/user or /mnt on both sides on all of your containers.

This has the advantage that when youre browsing (within a container) to select a folder, you are going to see the exact folder structure that youre already used to from browsing your shares on your server.  In my sample picture above, I would tell Ubooquity (in its UI) that my ebook collection is stored in /mnt/user/ebooks.  This happens to be the EXACT same path that you would refer to it within unRaid.  Hence why this trick is so easy.

The downside is that your container then has access to all of your shares (when theres no real need for it to).  And, you pretty much also have to make sure that /mnt/user is always passed with read/write privileges.  (One huge advantage of docker is that the container does not have to have write privileges to shares which it doesnt need to.

Confused yet?

And now for a final kicker.  Adding a line called /mnt mapped to /mnt may not work on all containers.   Some containers will outright insist on having a /workdirectory or a /downloads folder which you then have to suitable map to a particular share.  But, for the majority of them (probably at least the ones with a UI), you should be safe using the /mnt mapped to /mnt trick.

P.S.  If anyone else can try and come up with something that makes more sense that the above, please be my guest.

  • Like 1
  • Upvote 1
Link to comment

 

Why doesnt the "Check for Updates" button bring my Docker to the newest version of the application?

 

The "Check for Updates" button on the DockerMan page checks if the author of the Docker Container made changes to the container itself, not if the Application itself has an update.  The changes include how it installs your program or other things on the backend.

If the author has built-in a way to update the application (Restarting the docker, in the Web-UI of the Application) it wont show with the "Check for Updates" button.

How do I update to the newest version of the application?
This isnt consistent across every container, but there are a few common ways to do this. The specific way of updating should be spelled out by the author.


Some applications update by stopping the container and restarting it - Example: needos Plex Docker
Some applications update through the built in updater in the WebGUI of the application - Example: smdions Headphone Docker
Some applications every Friday have updates pushed to the containers which will install the latest version: eg: Most of linux server applications
Some applications are hard coded to a specific version, but allow for a Bleeding Edge install.  This goes out and downloads the newest version. NOTE: Not always guaranteed to work - Example: smdions Beets Docker
This is done by enabling "Advanced View" in the specific docker page (slider in the upper right hand corner) and setting a new Environmental Variable to EDGE=1

  • Upvote 1
Link to comment

Why does my docker.img file keep filling up?

 

Assuming that you have set a reasonable initial size for the image file of say 15-20 Gig for the average use case, then there are a few possibilities.

For applications that download (SabNZBD, NZBGet, etc), you must make sure that the destination AND intermediate (temporary download folders) are stored outside the image file (ie: you must make sure that the appropriate folders are mapped correctly).

Any folder which is referenced within the application but NOT explicitly mapped to a user share will wind up being stored within the docker.img file

See these posts for some real-world examples of common mistakes:

SabNZBD:  https://forums.unraid.net/topic/40783-issues-with-either-unraid-or-docker/?do=findComment&comment=399900

NZBGet: https://forums.unraid.net/topic/40815-community-applications-plugin-broke/?do=findComment&comment=400989

 

  • Like 1
  • Upvote 1
Link to comment

 

Why does my docker.img file keep filling up while using Plex?

 

April 2016: recent versions of Plex (0.9.16.3, maybe earlier) transcode to the config directory by default, so there is no need to make the changes described below.  If you have already configured your plex with a custom transcode directory that is fine, it will not hurt anything.

Regardless of which Plex Docker you choose, youll want to configure it to transcode outside of your main docker image. This will help prevent your docker image from filling up.

Step 1: On the unRAID Docker settings page for Plex, add a new Volume Mapping (Read/Write). The "Container volume" should be set to "/transcode", for the "Host path"...

Option 1: A good default host path would be in the appdata folder on your cache drive, i.e. if your /config directory is set to:
  /mnt/cache/appdata/Plex/
then the /transcode directory could be:
  /mnt/cache/appdata/Plex/transcode/

Option 2: If you have a lot of RAM you can save wear and tear on your cache drive by transcoding in RAM. In that case, set the /transcode host path to:
  /tmp

Note: Since about Plex version 0.9.14, transcoding to RAM does not work.  Recommend avoiding this option.
Step 2: Save your changes to restart Plex, then from within Plex go to Settings -> Server -> Transcoder. Hit the "Show Advanced" button, and in the "Transcoder temporary directory" field put "/transcode" and then "Save Changes".

Thats it!  For further reading...

If you are curious about the other transcoder settings, see this help page on the Plex website
See this thread for further discussion on transcoding in RAM.
If you continue to have problems with your docker image filling up, discuss it here.
Here is a discussion on finding docker containers with large log files.

  • Like 1
  • Thanks 1
  • Upvote 2
Link to comment

Dockers, theres so much to learn!  Are there any guides?

First, check this whole FAQ topic (the first post has an index).  It includes various guides to getting-started and installation issues.  Then check the stickied topics on this board, the Docker Engine board.  (links to stickies to be added here)

Application guides
Guide-How to install SABnzbd and SickBeard on unRAID with auto process scripts
Plex: Guide to Moving Transcoding to RAM
Get Started with Docker Engine for Linux
Get Started with Docker for Windows

If you know of other helpful guides (whole topics or single posts), please notify us, post about it in the Docker FAQ feedback topic.  Moderators: please feel free to edit this post and its list of guides.  Im sure theres a better way to format it.

  • Upvote 1
Link to comment

 

Why cant (insert docker app name here) see my files mounted on another server or outside the array

 

Generally, to have a docker application be able to see files located on another server, or stored outside the array, you would use the plugin called "Unassigned Devices" to mount the appropriate shares.

However, on versions of unRaid prior to 6.2beta 20, in order for any docker application to see the files mounted by Unassigned Devices, you must stop the entire docker service (Settings - Docker), and then restart it.

If you are running unRaid 6.2beta 20+, then you need to adjust your volume mappings mode (usually either RW or Read Only) to be RW:Slave or Read Only:Slave) by editing the template, and then clicking "Edit" on the volume being passed to the container.

  • Like 1
  • Upvote 1
Link to comment

 

Why did my files get moved off the Cache drive?


Why do I keep losing my Docker container configurations?
Why did my newly configured Docker just stop working?
Where did my Docker files go?

Docker configuration files and application data are often saved to the Cache drive, but theres a very important thing to remember - if you arent careful, the Mover will move your files off the Cache drive and into a User Share!

Most users have User Shares turned on, and if you do then the Mover process is going to try to move files and folders from the Cache drive to a data drive. It assumes that any top level folder on any data drive or the Cache drive is a Share folder.

To avoid that, here are the rules for the Mover:
* it does not move files at the root of the Cache drive
* it does not move root folders IF those folders are configured as Cache-Only shares
* it does not move root folders whose name begins with a period.  (In Linux by convention, file or folder names beginning with a period are considered hidden.)  

What we recommend (assuming you are using a Cache drive or pool) -
* Configure the Docker image file to be in the root of the Cache drive/pool, where it will be safe.  (/mnt/cache/docker.img)
* Configure all Docker folders as Cache-Only shares.  If you forget, the Mover may move them off the Cache drive!

For an example -
* The configuration settings for your Docker containers are typically stored in an appdata folder, and the appdata folder is typically stored on the Cache drive.
* Create the appdata folder on your Cache drive or pool.
* Go to the Shares tab for the appdata folder and change the Use Cache setting to Only.
* Now when you configure a Docker container path for the /config folder, set it to /mnt/cache/appdata/APP_NAME (e.g. /mnt/cache/appdata/plex and /mnt/cache/appdata/couchpotato).  On first use, those folders will be automatically created for you, and WILL NOT move from the Cache drive.
* Note: NEVER use /mnt/user/appdata/APP_NAME as the host path for the /config files.  The FUSE md driver does not properly support symlinks which most Docker applications require (many documented instances of this around the threads).
  Always reference your appdata via /mnt/cache/appdata/APP_NAME
  If you do not have a cache drive, and are storing your appdata files within the array, then reference the appdata like this: /mnt/disk1/appdata/APP_NAME (or disk2, disk3, etc)
  If you dont do this, you may run into unexpected results with your applications -> not starting up, strange results, etc.

Link to comment

My docker.img file is filling up due to excessive logging from various apps

 

Some applications will log almost everything that they do.  In cases of your docker.img file filling up due to excessive logging, you should look at the application's settings within its GUI and try to limit the logging that it performs.

 

Additionally, you can limit any docker's logging to a set size by adding the following to the Extra Parameters when you edit the application template (Switch to advanced view via the button in the top right corner)

 

--log-opt max-size=50m --log-opt max-file=1

This will limit the log size to a very reasonable 50 Meg

 

EDIT: DO NOT USE THE LOG ROTATION OPTION IN UNRAID LISTED BELOW.  IT IS NOT OBVIOUS THE STEPS REQUIRED TO MAKE IT WORK PROPERLY  For the log rotation settings to take effect, you MUST remove and reinstall your containers (or delete the docker image).  It is advised to instead use the extra parameters section instead

 

* Under unRaid 6.7.0+, the logging options now insert the appropriate entries into the entra parameters, but you still basically have to remove and then re-add the container

 

EDIT:  As of unRaid 6.4.0-rc7 you can set this globally for all applications by:

 

  1. Settings - Docker
  2. Stop the service
  3. Switch to advanced view
  4. Enable the logging rotation option accordingly
  5. Restart the service

 

 

 

  • Like 2
  • Upvote 2
Link to comment

How can I run other docker applications that are not listed within the App tab?

 

Try enabling dockerHub searches within CA (Settings - CA General settings).

 

Search for the container you wish to add.  When adding it, CA will attempt to gather all the relevant information about the application and create an XML that unRaid can use.  This is not however an exact science, and there are no rules anywhere that state that any particular dockerfile present on dockerHub must export the various paths and ports that it uses.  There is no substitute for actually reading the directions on dockerHub on how to actually run the container itself, and then adding the appropriate paths, ports, etc to the template itself.

 

Here's an explanation of how to manually extract the information from the dockerfile to use in the template

 

 

  • Thanks 1
  • Upvote 1
Link to comment

I've told {App-X} to look / move / copy files via SMB to my server.  Why doesn't it work?

 

Each docker application runs in its own virtualized network, and generally has no access to any SMB shares, etc that may also be available within your network.

 

To work around this, install the Unassigned Devices plugin (available on the apps tab), and mount a Remote SMB share with it.

 

Then, on the application's template, add an appropriate volume mapping to that Unassigned Devices mount point.  Don't forget to set the Access Mode to be either RW:slave or Read Only:slave depending upon what you need.

  • Like 1
  • Upvote 1
Link to comment

Fix Common Problems plugin is complaining about Container Port x not found or changed on installed applications.  What do I do?

 

As a general rule, there is absolutely zero need for you to ever edit the container port for any given application.  (And unRaid 6.3+ makes this harder to do).  Only ever edit the Host port.

 

There are however some cases where the template author / maintainer adds in an extra port to support an extra feature, etc for the application.  Your best course of action is always to ask in the appropriate support thread for the application.

  • Upvote 1
Link to comment

If I need to delete my docker.img file, will I lose my application's settings, etc?

 

No.  Pretty much any application available on the apps tab stores all of its information outside of the docker.img file and within the Appdata share.

 

Re-adding the applications after recreating the docker.img file is easily done through a variety of methods:

 

- Apps Tab: Go to the Previously installed apps section and reinstall the appropriate application.  You can check off multiple apps and have them all installed at once.

- Docker Tab, click Add Container, then select the appropriate user template via the template dropdown list

 

 

Either method will automatically install the apps the exact same way as before.  No modifications of the templates should be necessary.  After the downloads are completed, it will be like nothing ever happened.

 

  • Like 1
  • Upvote 1
Link to comment

How do I increase the size of my docker.img file?

 

Go to settings - Docker Settings.

 

Set Enable Docker to be "No"

 

Apply.

 

Switch to Advanced View (Top Right)

 

Change the size of the image.

 

Set Enable Docker to be "yes"

 

Apply

 

Done.

  • Like 11
  • Upvote 5
Link to comment

Why does the "EDIT" not appear on the dashboard / docker tab when I click on an icon?

 

You've deleted somehow (or the file(s) are corrupt) from the flashdrive the templates that are stored within /config/plugins/dockerMan/templates-user

 

If you've got a backup of the flash drive, copying that folder back and then hitting "Check For Updates" (or a reboot) will solve the problem.

if you don't have a backup, then the only real solution is to remove the apps and then reinstall them and put in whatever information was in the template

  • Upvote 1
Link to comment
Quote

What do I do when I see 'layers from manifest don't match image configuration' during a docker app installation?

 

I have a theory as to why this is actually happening, unfortunately I am unable to replicate this issue so I cannot test the theory. EDIT:  I know whats happening.  The details however aren't important (its caused by the docker API itself, not unRaid)

As to the solution, you will need to delete your docker.img file and recreate it again.  You can then reinstall your docker apps through Community Application's Previous Apps section or via the my* templates.  Your apps will be back the exact same way as before, with no adjustment of the volume mappings, ports, etc required.

 

  • Like 2
Link to comment

How Do I Create My Own Docker Templates?

 

(See also https://forums.unraid.net/topic/101424-how-to-publish-docker-templates-to-community-applications-on-unraid/ for a video which covers much of this)

 

 

Edit: This FAQ entry is for developers only.  Users do not need to worry about any of this.  This question keeps coming up, and rather than have the answer continually buried in the Programming forum I elected to put it here instead.

 

  1. On the Settings tab, docker, select Docker Authoring Mode (The docker service has to be stopped to do this)
  2. On The Docker tab, select Add Container
  3. Fill out all of the relevant information, including the advanced section.  Note that you DO NOT need to fill out  host volumes.  It is OK however to fill out the host ports.  I would however recommend against filling out any host paths.
  4. Click Save
  5. Copy and paste the ENTIRE XML that appears to an appropriately named XML file somewhere.
  6. Side note, the Categories which dockerMan generates are unofficial.  The only official entries for that are generated by the Application Template Categorizer.  (Although at this time and for the foreseeable future the two do match)  Also, these are Categories.  They are not Tags  IE: You can't just make one up by yourself.

 

- Add in whatever other tags you wish that are documented here (http://lime-technology.com/forum/index.php?topic=40299.0 ) 

 

* NOTE: It is recommended (by not required) to host the icon yourself on your own github repository, or a website which you are in control of.  Random icon links on the web can and do change.

 

Publishing to CA

  • Create a GitHub repository and upload the XML(s).  Use a separate repository for your xml files.  (Keep it separate from the docker associated files if you've built your own container).  If you have multiple templates, put them all into the same repository.   NOTE:  The XML files must be within the "master" or "main" branch of the repository.  2FA Authentication must be enabled on your GitHub repository for security.
  • Drop myself (squid)  a PM asking for it to be published with a link to the github repo.
  • I'm going to  insist you create a <Support> thread.  Just create it anywhere (as you won't be able to create in the docker Containers) and a moderator will move it.  Update the XML with the support link.  I will also insist on Categories being set.  
  • I do a quick check on the xml(s) and then add it to CA.  If there are no major problems, within 2 hours all users of CA will have access to it under normal circumstances.
  • Time permitting after its available to all users of CA, I will update the Repositories thread

 

If you like, also add a developer profile https://forums.unraid.net/topic/38619-docker-template-xml-schema/page/3/?tab=comments#comment-919111

 

 

Note:  After you have a repository added, I do not need to know about any new xml's being added.  CA (and more to the point the  appfeed) will handle all changes to the xml's automatically every 2 hours.

 

Regarding "Developer Status":

On 10/4/2019 at 4:56 PM, jonp said:

1)  You earn the status of Community Developer by not only creating containers/integrating them with CA, but by showing your commitment to providing support for them.

 

2)  You can create a post for support for your container anywhere and then simply PM a moderator to move it to the docker containers forum.

 

3)  After sufficient time contributing, you can request official Community Developer status by PMing Squid and I.  If he approves, I will add you.

 

Side Note:

 

You can always see what errors are made in the template by going to the Apps Tab, Statistics and then viewing template errors.

 

The apps tab reserves the right to modify any template values in the XML for varying reasons.  The reasons could be

  • Relatively minor issues that may affect CA
  • The templateURL entry will ALWAYS be filled out or changed by CA to be correct
  • The Icon URL may get changed to ensure that its a valid URL, it points to HTTPS, and if a HTTPS version is not available (but HTTP is), then it will get changed to a cached HTTPS version

 

NOTE: Also see here for the various policies regarding applications and CA

 

 

  • Like 5
Link to comment

Why does Sonarr keep telling me that it cannot import a file downloaded by nzbGet? (AKA Linking between containers)


This problem seems to continually be brought back up, and the reasons all go back to host / container volume mapping.  (note that I'm using nzbget / sonarr as an example, but the concept is the same for any apps that communicate via their APIs and not by "blackhole" method)

First and foremost, within Sonarr's settings, tell it to communicate to nzbGet via the IP address of the server, not via localhost

Here is how a file gets found by Sonarr, downloaded by nzbGet, post-processed by Sonarr, and moved to your array.

Sonarr searches the indexers for the file, and then tells nzbGet (utilizing its API key) to download the file.   Very few users have trouble with this section.

nzbGet downloads the file, and then tells Sonarr the path that the file exists at.  This is the section this FAQ entry is going to deal with.

Sonarr performs whatever post processing you want them to do (see their appropriate project pages for help with this.

Sonarr then moves the file from the downloaded location to the array.  Once again, very few users have trouble with this section.

nzbGet downloads the file, and then tells Sonarr the path that the file exists at

Let's imagine some host / container volume mappings set up as follows (this set up seems to be a common set up for users having trouble)


App Name    Container Volume    Host Volume
nzbGet    /config                        /mnt/cache/appdata/nzbget
sonarr    /config                        /mnt/cache/appdata/sonarr

            /downloads                   /mnt/cache/appdata/nzbget/downloads/completed/

 

Within nzbGet's settings, the downloads are set to go to /config/downloads/completed

So after the download is completed, nzbGet tells sonarr that the file exists at /config/downloads/completed

Sonarr dutifully looks at /config/downloads/completed and sees that nothing exists there and throws errors into its log stating that it can't import the file.  Error will be something like can't import /config/downloads/completed/filename

 

Why?  Because the mappings don't match.  Sonarr's /config mapping is set to /mnt/cache/appdata/sonarr, whereas nzbGet's /config mapping is set to /mnt/cache/appdata/nzbget.

 

Ultimately, the file is stored at /mnt/cache/appdata/nzbget/downloads/completed/, and sonarr winds up looking for it at /mnt/cache/appdata/sonarr/downloads/completed.

 

Another common set up issue (which is closer to working)

 

App Name    Container Volume    Host Volume
nzbGet          /config                   /mnt/cache/appdata/nzbget

                    /downloads             /mnt/cache/appdata/downloads
sonarr          /config                    /mnt/cache/appdata/sonarr

                   /downloads             /mnt/cache/appdata/downloads/completed

 

Here's what happens with this setup

 

nzbGet is setup to download the files to /downloads/completed

 

After a successful download, the file exists (as far as nzbGet is concerned) at /downloads/completed/...., and nzbGet tells sonarr that.

 

Sonarr then looks for the file, and is unable to find it and throws errors into the logs.  And the kicker is that the error states something along the lines of "Can't import /downloads/completed/whateverFilenameItIs"

 

Everything kinda looks right.  After all the error message is showing the correct path...  No its not, because the mappings don't match between sonarr and nzbGet for the downloads

 

nzbGet puts the file to /downloads/completed/filename (host mapping of /mnt/cache/appdata/downloads/completed/filename)

sonarr is looking for the file at /downloads/filename (host mapped of /mnt/cache/appdata/downloads/completed/completed/filename)

 

Huh?  I don't get it.  ->  The container paths match between the two apps, but the host paths are different, which means that communication isn't going to work correctly.  Think of the "container" path as a shortcut to the host path.

 

Proper way to set up the mappings:

 

App Name    Container Volume    Host Volume
nzbGet                /config              /mnt/cache/appdata/nzbget

                         /downloads        /mnt/cache/appdata/downloads
sonarr               /config              /mnt/cache/appdata/sonarr

                        /downloads        /mnt/cache/appdata/downloads

Tell nzbget to store the files in /downloads/completed, and sonarr will be able to find and import the files because both the host and container volume paths match.


TLDR:  Trust me the above works

  • Like 3
  • Upvote 3
Link to comment
  • trurl featured this topic

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.