Docker vs Plain old App install


Recommended Posts

You likely need to clarify your question further.

 

We now have 3 completely separate means of installing apps - plugins (like in 5.0), virtual machines (either Xen or KVM) and Docker, which is almost a blend of the two (it's installed in a sudo-vm, but uses your host ip address and you control from http://host:port

 

If you are asking why Docker over plugins - this should be fairly self evident and has been explained a bunch of times - basically you are dependent on a specific user to generate plugins and they can conflict when requiring different dependencies (i.e. python).

 

If you are asking why Docker of VMs, Docker is a more lightweight approach, though provides a similar end result (other than you can access the apps from http://host:port vs http://vm name or ip:port)/. The other large benefit is that by running docker you don't need to assign vcpu/memory to specific VMs as Docker will use the same vcpus/memory as UnRAID. This gives all your apps access to all system resources, rather than carving pieces off for each VM you run, plus the base OS.

 

Not sure if any of the above helped answer your question, but if not, can you try and ask again with more specifics?

Link to comment

It kind of depends on where your apps are installed. 

 

If you're using plugins, there are various issues that can prevent unRAID from booting properly on restart (I've had that happen a few times), or the plugin could crash your server (I've personally never encountered this).

 

If you have another server that's running the apps, you could consolidate the 2 servers (less power consumption).

 

While I've never used docker, my understanding is that the hardware requirements aren't as tough to meet as virtualization requires, but still separates the Docker OS (which I think is Ubuntu based), and further separates its Docker apps from one another.  In the event of a Docker app crash, the other docker apps should still keep running.

 

Hopefully someone with first hand experience can better explain, or correct any mistakes I've made.

Link to comment

I believe the idea is to run the processes in their own sandbox so they don't interact with each other or the host OS.  You probably wouldn't use Docker on your workstation.

 

I wonder if Docker apps get around "x depends on y, now you have to also install that" - based on what it's supposed to do it probably does that.

Link to comment

The largest benefit is that if you are running a single VM and have 2 applications that require different versions of python (for example) you are usually screwed. You can't run 2 versions of python in a single VM (or host) so one app will work, while the other is broken.

 

With docker you have a base image that doesn't contain python or anything else other than base OS features. You then create docker containers that use that base OS VM, but allows you to configure custom details for each app. IE. you could have a docker container for application 1 that uses python 2.6 and a container for application 2 that uses python 2.7. Each container is only going to contain the differences from the base OS VM, so they are tiny, but each container is self contained so you can run unique configurations without them colliding.

 

I am a Microsoft guy, so it's easiest to explain in these terms. If you have Office 2010 installed, and install Office2013 it's going to remove and overwrite Office 2010. You are not able to run Office 2010 and 2013 side by side. With Docker though you could install Office 2010 into one container, and Office 2013 into another container. Now both are accessible because they have their own little sandbox - with both of them relying on a master Windows image VM for all the common bits that they require without having to install Windows twice in 2 VMs.

 

So instead of having 2x 4GB images with Windows, you can have a single 4GB image and 2x 100MB containers each with their own Office version. As you add more and more containers you can see where you are saving tons of space because each container will use the same base OS VM image.

 

Hope that helps.

  • Like 1
Link to comment

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.