To Docker or not to Docker? (Pros and Cons)

I'm definitely a fan of Docker, including having developed a docker-based WebUI for PiVPN. I'm in the process of consolidating some server functions, and am trying to decide whether or not to Dockerize Channels DVR and Plex. And, to clarify, I'm talking about using Docker Desktop here and the Windows WSL2 backend.

My preference is to run both of them as Docker containers, but previous experience tells me to not mess with a good thing -- both Channels DVR and Plex have worked spectacularly well for me as installed Windows applications.

So I'm looking for some real-world pros-and-cons here, which I see as follows:

Pro-Docker:

Currently running samsung-tvplus-for-channels, pluto-for-channels and ombi as containers
Planning to run xteve as a container
Easy container updating using watchtower in the "run-once" mode
Application isolation
Minimization/elimination of issues with dependencies

Con-Docker:

Migrating data from Windows based installations to Linux (WSL2) installations is non-linear
No compelling reason to switch, as native Windows installations have been solid
Lack of hardware transcoding support in WSL2 Docker containers
Lack of Bonjour support in WSL2 Docker Containers

So, I'm hoping for some input here from those that have made this switch -- or from those that have decided against it. Are there additional pros and cons I should be considering?

This piece of software is just to watch tv, just install it the east way.

2 Likes

Well sure, that’s a reasonable way to look at it. Though one might argue, that in addition to ease of installation, there’s also ease of maintenance, ease of upgradability, and ease of migration to a new platform (like for me, having used Channels DVR for a few years).

Also, for those that are using Docker already, spinning up a Docker container or installing natively on Windows are both dead-easy. It’s the long-term management that may separate one from the other.

1 Like

I use Docker for Pluto and Samsung for Channels but nothing else. My experience is mainly with Windows, so I am running channels on Windows.

I would say go with the environment that you are most comfortable with. It sounds like you are comfortable with both, so I think you have a different question. Unless you plan on totally eliminating the Windows environment, why switch? My Windows and NAS servers are both running for years with little to no effort.

If you are keeping both, why go through the effort to switch?

This feels like my experience with Docker as well, but replace Windows with Mac OS. I have Docker Desktop running there, but because hardware transcoding isn't available in Docker on Mac OS, I have Channels and Plex running as native applications. Anything else that I can dockerize, I will though. A quick docker-compose pull to update everything and it all just works.

Just FYI, Pluto Channels can now be integrated much more easily into Channels DVR, without using Docker at all: https://nocords.xyz

(Discussion here.)

Also, as far as SamsungTV+ goes, that docker container was created merely a test by that developer, it passes along the same source URLs, and doesn't add anything extra to the process aside from another layer/variable that could break. Meaning, there's no benefit to the end user:

You'd be better off just using the URLs directly:

Source: https://i.mjh.nz/SamsungTVPlus/us.m3u8
XMLTV Guide Data: https://i.mjh.nz/SamsungTVPlus/us.xml
2 Likes

I occasionally had issues with TVE authentication using the docker version. Apparently, the version of headless chrome was not up-to-date. I am not sure if this was something I was doing wrong or if I needed to update the docker shell that channels resides in, but I switched to the Synology package version of channels and I haven't had problems with either TVE or updating the version of chrome.

I went full Docker about 6 months ago and am really pleased. This is Linux Docker so I can’t really speak to Windows. However, I’ve been really happy with it from a performance and administration perspective. Both Channels and Plex are indistinguishable for me in Docker vs stand alone. Plus I have Home Assistant and several other containers running. 14 in total. Proteiner and Watchtower make administration and updates a breeze. Plus Docker seems to be really easy on system resources. Also, backups are super straight forward. I have one “Servers” folder where all all the various containers save their data and it’s backed up regularly. That with Docker compose will make recovery possible within minutes possible should there be an issue.

Yeah. I’m a bit of a nerd. But now that it’s set up, I rarely need to touch it.

I've been toying around with this same idea. I currently have my Channels and Plex servers running on my Synology 1019+ as native apps. They just work...and the simplicity of running it in Synology is very....simple :slight_smile:

But, the nerd in me wants to move everything to a stronger server. I've been toying around with migrating to my Intel Mac mini on Docker Desktop. That came to a quick halt when I read the moment you bring the transcoder into a container, its only capable of being used in that container. That's not helpful.

I also have a refurb M1 Mini running, again, trying to get it to work in Docker. I'm not having the best of luck with that one because I'm still new to Docker and I'm running into issues getting the network in the container to recognize the host.

I don't know if this is a true statement or not, but I've read that putting your services inside of a docker container is more secure as you are limiting any exposure to the rest of the device. So, that's what has me on the big Docker or not to Docker debate.

I think I'm secretly trying to find a way for me to buy new hardware to tinker with....

My setup is an Intel Mac using Docker - you wouldn't even be able to use hardware transcoding with Docker on Mac (or Windows). That's why I have Plex and Channels as native apps. Anything else that doesn't need a transcoder runs in Docker.

Can you help me understand how to get docker to work in mac? I can get my container visible by going to 127.0.0.1 but I cannot figure out how to let the container see anything outside of itself. So it can't scan for my HDHR or connect to Channels servers for authentication.

Docker for macOS does not have HOST networking mode, therefore it can't use discovery. It can't be found with bonjour, and it can't find other things using discovery protocols.

If you run it with Docker on macOS, you'll need to manually add your HDHomeRuns via their IP address, and you'll need to connect to the server manually via IP address in your clients.

If you do this, be sure to use your DHCP Reservation feature on your router to ensure everything always gets the same IP address.

1 Like

So the network scan won't find the HDHR, but if I type in the IP address, it should? Do I need to add the HDHR ports in my docker run command so that it knows what to do with that port?

I don't need to run channels in Docker, I'm just toying with it right now to get a basic understanding of what I need to do to get Docker to work for any container I put in there since I'm more familiar with getting Channels setup. So far I've found if I don't add -p 127.0.0.1:8089:8089 into my docker run command, I can't get to the web console.

Nope. It can see all of this over the network, it just can't use discovery protocols, because it's technically running on another subnet.

Correct. What you're doing there is mapping port 8089 on the docker container that's running, to port 8089 of the host (your Mac). Then traffic can route to it.

If you wanted, you could map it to any port you wanted. This is how some of us are running more than 1 instance of Channels DVR Server on the same computer while allowing for remote access. This of course requires a separate Channels account/subscription per instance.

Thanks! That makes sense.

The problem I run into here...is once I get to the Welcome screen, it wants me to sign into your servers to authenticate. Why can't it communicate outside of the container? How do I get Channels to see the outside world? Do I need to add a -p 443:443?

Once I click the button to sign in, it just hangs.

Ahh, because it's redirecting with the wrong IP address I bet.

When it hangs, look at the url it's trying to load. I bet it has a 172 address in there. Take that URL, and copy it. Then replace that 172 ip, with the actual IP. Then it will load correctly.

By doing a Database Restore, it signed my DVR in.

But now...I can't get TVE to sign in. I keep getting an error

2022/04/21 10:44:19.033769 [TVE] Auth failed for ATTOTT: context canceled

Might be something going on with my directv stream account....I can't login directly either.

If you are using TV Everywhere with Channels:

  1. Ensure you are using the latest pre-release of the DVR server. TV Everywhere is a moving target, and if you wish to use it you need to be aware of this aspect of it.
  2. Make sure you are connecting to your DVR server via HTTPS—yes, even if using a local address, and if doing so causes the browser to give you a warning about the site's certificate—because most browsers won't enable location services without a secure connection. (Many networks use IP- and/or browser-based geolocation to determine access, and that won't work if you haven't confirmed access to location services. This is especially true if you want to use local networks—NBC, ABC, CBS, Fox, etc.—as those are definitely location-dependent.)

After you've done those two things, then if it's still not working, submit diagnostics from the server.

It says https. But continues to fail.

Can I use TVE on 2 separate DVRs?