Docker is a method of virtualization on an application level.
You host a container platform on your computer and this allows you to utilise containers.
Example of Containers are applications such as
Plex
Sonarr
Pihole
Each container is a 'complete' platform with all the dependencies included - your container platform supplies Disk/CPU/Ram and network for the Container to function.
Containers can be based on operating systems that are different to your computer.
Using containers mean you have a very easy way of trying an Application without installing to your native operating system.
Let us know if you have a NAS /PC /Server and we can tailor the answer further.
Containers can be based on operating systems that are different to your computer.
Containers utilise the host's kernel - which is why there needs to be some hoops to run Linux container on Windows (VM/WSL).
That's one of the most key differences between VMs and containers. VMs virtualise all the hardware, so you can have a totally different guest and host operating systems; whereas because a container is using the host kernel, it must use the same kind of operating system and accesses the host's hardware through the kernel.
The big advantage of that approach, over VMs, is that containers are much more lightweight and performant because they don't have a virtual kernel/hardware/etc. I find its best to think of them as a process wrapper, kind of like chroot for a specific application - you're just giving the application you're running a box to run in - but the host OS is still doing the heavy lifting.
Along with what the other old mates have said. Using containers is super handy in web development. You can use Docker Desktop (windows, mac, linux etc) and set up containers, one for PHP, another for postgres (database) and have them all interconnect.
The benefit I've found is that once someone has set up a docker file (the thing that says how it all builds and interconnects) you can launch it with a single click.
The Kbin project itself has a docker setup to get up and running, handling most of the connection between the database and Symfony (the framework of the website)
It’s not NAS specific, it’s platform independent - that’s the whole point. You have an application you want to run, and you package it all up into a docker image which contains not only the application but it’s dependencies and their dependencies all the way down to the OS. That way you don’t need to worry about installing things (because the container already has the application installed), all you have to do is allocate some resources to the container and it’s guaranteed* to work
*nothing is ever as simple as it first appears
One area where this is really helpful is in horizontally scaling workloads like web servers. If you get a bunch more traffic, you just spin up a bunch more containers from your server image on whatever hardware you have laying around, and route some of the traffic to the new servers. All the servers are guaranteed to be the same so it doesn’t matter which one serves the request. This is the thing kubernetes is very good at.
Docker is not platform independent. The OS is not included in the image, and the executables in the image rely on the host system having a compatible kernel and system architecture. Only userspace components like software libraries and, unfortunately, CA certificates are included in the image.
It primarily supports x86_64 Linux systems. If you want to run on ARM, you need special images or you need a CPU emulator. If you want to run on Mac OS or Windows, you usually need a VM. There are Windows Docker containers, but Docker as a technology isn't really applicable to Windows because of the dirty separation between userspace and the kernel (if you've ever tried to run Docker on Windows Server without Hyper-V support, this is why it's so difficult to get it to work and it stops working after Windows updates).