unRAID 6 Beta 6: Docker Quick-Start Guide


Recommended Posts

That will install the latest public version of Plex which is a couple releases old.

 

Hmm, I don't want that either :) I want to be able to specify exactly what version of plex I am going to get.  Why do the dockerfiles all use that shell.ninthgate.se site instead of doing something like this:

 

 

if that would work, then perhaps we could pass the download url via an env variable?

docker <usual stuff> -e src=http://downloads.plexapp.com/plex-media-server/0.9.9.10.458-008ea34/plexmediaserver_0.9.9.10.458-008ea34_amd64.deb

Because the large majority of people want to run the latest and the greatest. And apt is very easy. The way you described would be great for power users but would be a support nightmare for others who have never heard of an environmental variable and want it to just work.

Link to comment
  • Replies 321
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Because the large majority of people want to run the latest and the greatest. And apt is very easy. The way you described would be great for power users but would be a support nightmare for others who have never heard of an environmental variable and want it to just work.

 

Hmm, wouldn't it be more of a support nightmare if a problem were discovered in the version provided by shell.ninthgate.se and users had no way to revert?  I can't find any documentation on that site, I don't know how often it updates or how to get plexpass versions, etc.

Link to comment

 

well tell me 2 things

 

can you upgrade sickrage without rebuilding the image?

did you have a look in your btrfs/subvolumes directory ?

 

Let me explain how it can be done with this modified Sickbeard Dockerfile:

 

FROM FROM ubuntu:14.04
MAINTAINER Example <[email protected]>

RUN usermod -u 99 nobody && \
    usermod -g 100 nobody

RUN apt-get update -q && \
    apt-get install -qy --force-yes python python-cheetah ca-certificates git

RUN git clone https://github.com/midgetspy/Sick-Beard/ /opt/sickbeard/ && \
    chown -R nobody:users /opt/sickbeard

VOLUME /config
VOLUME /data

EXPOSE 8081

ADD ./start.sh /start.sh
CMD ["/start.sh"]

 

Now, create a start.sh file alongside Dockerfile:

 

#!/bin/bash

# Main command
CMD="python /opt/sickbeard/SickBeard.py --datadir=/config"

# Update container
apt-get update -qq && apt-get upgrade -y

# Update git clone with pull
cd /opt/sickbeard && git pull

# Running the main command as nobody
su -c "$CMD" -s /bin/sh nobody

 

As you can see, the container will be updated every time it run.

 

Wow this is so inefficient and a wast of space. I run one container and only one container per service. I name my containers so I can shut them down and start them up, and I don't have to recreate them. My sickbeard and couchpotato work and they can update while the container is running. The trick is to have sickbeard and couch as background process and something else as the foreground process. I have a process monitoring the log as the foreground process so the container only stop when you shutdown or when you tell it to stop. You can visit my docker index if you like.

 

hurricane

 

and I have documented most of my containers on this thread here.

 

http://lime-technology.com/forum/index.php?topic=33599.0

 

PS If people would like I could update to ubuntu 14.04, I don't see an issue running precise containers though.

 

Also intermediate images can be removed when building from source. You just add --rm=true when building from the Dockerfile. This is not the issue if your are pulling images from the index rather than building them from source.

 

also localhost works if you share the host network stack  you can do this by adding --net=host to your run command.

 

I will update all my files to run as user nobody.

 

Link to comment

Deleting threads like that is a bad thing.  Locking them serves the same purpose but doesn't destroy nanny information.

 

Agreed. I thought the moderators had gotten out of the habit of deleting forums (or letting users do it). There is still often useful information in there that is now lost.

 

Why not just add a note that it's deprecated and lock it.

Link to comment

I'm running into an update issue with Docker containers for Sickbeard and Couchpotato.  When I try to do an update from within either app, it tells me it can't update because there are local files that have been changed (and lists the system files it thinks were changed).  I haven't changed any of the files, so I'm not sure why it's giving me this conflict and refusing to update.  So I guess I'm wondering if there is any way to change the files so it doesn't see them as conflicted, or is there a way to force the update so it ignores the conflicted files, or some other solution that I'm missing?  This is on a test server, so I could I suppose just delete the container, and try updating again, but I was hoping for a solution in case I run into this later with "production" data.

Link to comment

I'm running into an update issue with Docker containers for Sickbeard and Couchpotato.  When I try to do an update from within either app, it tells me it can't update because there are local files that have been changed (and lists the system files it thinks were changed).  I haven't changed any of the files, so I'm not sure why it's giving me this conflict and refusing to update.  So I guess I'm wondering if there is any way to change the files so it doesn't see them as conflicted, or is there a way to force the update so it ignores the conflicted files, or some other solution that I'm missing?  This is on a test server, so I could I suppose just delete the container, and try updating again, but I was hoping for a solution in case I run into this later with "production" data.

 

check out my docker images if you like, I don't have that issue. https://hub.docker.com/u/hurricane/

Link to comment

I'm running into an update issue with Docker containers for Sickbeard and Couchpotato.  When I try to do an update from within either app, it tells me it can't update because there are local files that have been changed (and lists the system files it thinks were changed).  I haven't changed any of the files, so I'm not sure why it's giving me this conflict and refusing to update.  So I guess I'm wondering if there is any way to change the files so it doesn't see them as conflicted, or is there a way to force the update so it ignores the conflicted files, or some other solution that I'm missing?  This is on a test server, so I could I suppose just delete the container, and try updating again, but I was hoping for a solution in case I run into this later with "production" data.

 

Updating an application within a Docker container via a web interface goes against the whole point of running Docker in the first place.

 

Lets say you update Sickbeard via the web interface. Then something happens and you need to regenerate your container. There goes your update, and your current database that was upgraded earlier is no longer compatible with the old version. Best case scenario SickBeard is offline, worst case scenario the database is corrupted and you have to now start from scratch.

 

Just Say No to git and updating via Web UI in Docker! :)

Link to comment

I'm running into an update issue with Docker containers for Sickbeard and Couchpotato.  When I try to do an update from within either app, it tells me it can't update because there are local files that have been changed (and lists the system files it thinks were changed).  I haven't changed any of the files, so I'm not sure why it's giving me this conflict and refusing to update.  So I guess I'm wondering if there is any way to change the files so it doesn't see them as conflicted, or is there a way to force the update so it ignores the conflicted files, or some other solution that I'm missing?  This is on a test server, so I could I suppose just delete the container, and try updating again, but I was hoping for a solution in case I run into this later with "production" data.

 

Updating an application within a Docker container via a web interface goes against the whole point of running Docker in the first place.

 

Lets say you update Sickbeard via the web interface. Then something happens and you need to regenerate your container. There goes your update, and your current database that was upgraded earlier is no longer compatible with the old version. Best case scenario SickBeard is offline, worst case scenario the database is corrupted and you have to now start from scratch.

 

Just Say No to git and updating via Web UI in Docker! :)

 

So how is someone supposed to update these containers?

Link to comment

I'm running into an update issue with Docker containers for Sickbeard and Couchpotato.  When I try to do an update from within either app, it tells me it can't update because there are local files that have been changed (and lists the system files it thinks were changed).  I haven't changed any of the files, so I'm not sure why it's giving me this conflict and refusing to update.  So I guess I'm wondering if there is any way to change the files so it doesn't see them as conflicted, or is there a way to force the update so it ignores the conflicted files, or some other solution that I'm missing?  This is on a test server, so I could I suppose just delete the container, and try updating again, but I was hoping for a solution in case I run into this later with "production" data.

 

Updating an application within a Docker container via a web interface goes against the whole point of running Docker in the first place.

 

Lets say you update Sickbeard via the web interface. Then something happens and you need to regenerate your container. There goes your update, and your current database that was upgraded earlier is no longer compatible with the old version. Best case scenario SickBeard is offline, worst case scenario the database is corrupted and you have to now start from scratch.

 

Just Say No to git and updating via Web UI in Docker! :)

Well you would be right as long as docker container is set to install a specific version rather than git master. A rebuild after update could cause a database issue

 

But if the docker container is set to install from git master, then Web ui updates would be fine. I know there are different schools of thought and you're against installing from git master, but some people prefer to run only the latest with all the bug fixes and updates.

 

With git master, people can update as soon as the new version is out, but with specific versions in docker, you would have to wait until the repo manager updates his source (we all know that plugin developers come and go)

Link to comment

With git master, people can update as soon as the new version is out, but with specific versions in docker, you would have to wait until the repo manager updates his source (we all know that plugin developers come and go)

 

Right but again that goes back to the issue of what happens when you need to rebuild the container? Or the container crashes? Then the scenario I outlined above applies.

 

I also love running the bleeding edge. But even in development it bit me in the ass with CouchPotato as when going back and forth between git master and the last stable version I lost my entire want list.

Link to comment

I'm starting to wonder if the mind set of all the docker early adoptors is actually not conclusive to docker, but is instead better served by running XEN/KVM virtual machines. 

 

Full Disclosure: I have not taken the leap into playing with docker myself but I have been diligently keeping up on the various threads so that I'll know when the time is right for me.  Pretty much how I dealt with Xen ... call me a semi-early adopter :)

 

But I get the distinct impression that docker will indeed be great for all the people out there who are almost too afraid to even mess about with mature plugins. For anyone else more savvy / adventurous, docker will feel limiting by its very nature.

 

[shrug] Just a random thought that hit me reading about how to manipulate the guts of a container vs. treating them like near inviolable blobs that get replaced whole when there are updates.

Link to comment

 

Lets say you update Sickbeard via the web interface. Then something happens and you need to regenerate your container. There goes your update, and your current database that was upgraded earlier is no longer compatible with the old version. Best case scenario SickBeard is offline, worst case scenario the database is corrupted and you have to now start from scratch.

 

Just Say No to git and updating via Web UI in Docker! :)

 

So to make sure I understand what you're suggesting, the container would never have an application update performed inside it.  Instead the container's developer would just release a new container with the updated version of the app.  If so doesn't this put us right back to where we were with plugins (have to write your own where you can control the version, or only get updates when the developer publishes one)?

 

 

Link to comment

I have written some scripts that will make it so those who only want to run the stable versions can do so, and those who want to update and run the latest git versions can also do so. All from the same Dock. I am working on updating everything today.

Link to comment

I ran into a new potential issue (or perhaps I just don't have something setup correctly on my test machine).  I setup SAB/SB/CP/Plex (using the eschultz provided containers), and they all were working last night.  When I checked this morning SB and CP were not responding correctly.  So I used docker stop and docker start to reset the container.  However, when I started the apps, all the configuration information was lost.  So as a test, I did the same thing with SAB, which was working fine, and it too lost the configuration info (when I go to the URL, I get the setup wizard). 

 

Here are the docker commands used in case that helps (and this was a fresh unraid install on my test machine, none of the apps were there previously).  The machine has no plugins installed, and these are the only things running.

 

docker run -d -h Tower --name="sabnzbd" -v /mnt/cache/Apps/sabnzb:/config -v /mnt/user/Data:/data -p 8080:8080 eschultz/docker-sabnzbd

docker run -d -h Tower --name="couchpotato" -v /mnt/cache/Apps/couchpotato:/config -v /mnt/user/Data:/data -p 8082:5050 eschultz/docker-couchpotato

docker run -d -h Tower --name="sickbeard" -v /mnt/cache/Apps/sickbeard:/config -v /mnt/user/Data:/data -p 8081:8081 eschultz/docker-sickbeard

 

Link to comment

Just a thought - have you checked that the Apps share is set to be cache only.  If not, mover might have kicked in and moved the configuration information to the main array.

 

Unless you manually went in and changed the /mnt/cache/Apps to cache only, this is what happened.  This is probably why the programs stopped working correctly overnight.

 

The good news is that you can probably just copy the files back off the array to the cache drive, and your settings should be back.  Don't forget to make the share a cache only share. 

 

*Also, make sure to set the cache/docker share to cache only also.

Link to comment

Just a thought - have you checked that the Apps share is set to be cache only.  If not, mover might have kicked in and moved the configuration information to the main array.

 

That was it, the mover script moved the files, so I have changed Apps to be cache only (I thought it was set that way previously, but apparently not).  I did verify docker was set correctly before so that isn't an issue.

Link to comment

I could do with some help please!

 

I've upgraded from 5a to 6 and my XEN ArchVM seems to die as soon as i ask it to do anything useful so i thought i'd move over to docker. Now i think i get it but i'm having some trouble.

 

So far I've installed the following apps and here's the commands I've used to do so.

 

docker run -d -h Tower --name="sabnzbd" -v /mnt/cache/Apps/sabnzb:/config -v /mnt/user/Download:/Download -p 8080:8080 eschultz/docker-sabnzbd

 

docker run -d -h Tower --name="couchpotato" -v /mnt/cache/Apps/couchpotato:/config -v /mnt/user/Download:/Download -v /mnt/user/Media:/Media -p 5050:5050 eschultz/docker-couchpotato

 

docker run -d -h Tower --name="sickbeard" -v /mnt/cache/Apps/sickbeard:/config -v /mnt/user/Download:/Download -v /mnt/user/Media:/Media -p 8081:8081 eschultz/docker-sickbeard

 

docker run -d  --net="host" --name="plex" -v /mnt/cache/Apps/plex:/config -v /mnt/user/Media:/Media -p 32400:32400 eschultz/docker-plex

 

Now Sickbeard and SABnzbd seem to work fine.

 

Couchpotato and plex just don't seem to work for me at all.

 

running docker ps gives me this

 

root@Tower:~# docker ps

CONTAINER ID        IMAGE                              COMMAND                CREATED            STATUS              PORTS                              NAMES

c49631160446        eschultz/docker-sickbeard:latest  python /sickbeard/Si  58 minutes ago      Up 58 minutes      0.0.0.0:8081->8081/tcp            sickbeard

ad9dd72ffa92        eschultz/docker-sabnzbd:latest    /usr/bin/sabnzbdplus  About an hour ago  Up About an hour    9090/tcp, 0.0.0.0:8080->8080/tcp  sabnzbd

 

 

and running docker ps -a gives me this

 

root@Tower:~# docker ps -a

CONTAINER ID        IMAGE                                COMMAND                CREATED            STATUS                        PORTS                              NAMES

5c9d34427ba0        eschultz/docker-plex:latest          /start.sh              42 minutes ago      Exited (1) 33 minutes ago                                        plex

c49631160446        eschultz/docker-sickbeard:latest    python /sickbeard/Si  59 minutes ago      Up 59 minutes                  0.0.0.0:8081->8081/tcp            sickbeard

ee03a0c8883e        eschultz/docker-couchpotato:latest  python /opt/couchpot  About an hour ago  Exited (0) About an hour ago                                      couchpotato

ad9dd72ffa92        eschultz/docker-sabnzbd:latest      /usr/bin/sabnzbdplus  About an hour ago  Up About an hour              9090/tcp, 0.0.0.0:8080->8080/tcp  sabnzbd

 

I'm guessing this means that couch and plex cant start for some reason, again anyone got any pointers?

 

Thanks

 

 

Link to comment
Guest
This topic is now closed to further replies.