4 ms·
Can someone explain Docker in layman's terms and juxtapose it against something I already understand (aws perhaps)?
by brianbreslin 12y ago
Can someone explain Docker in layman's terms and juxtapose it against something I already understand (aws perhaps)?
- rwmj 12y agochroot?
- taylorbuley 12y agoIn the naughts, virtualization developed as a software layer to abstract physical hardware and provide so-called "virtual machines" that, instead of working exclusively with hardware, function as a group and share resources as a pool. Docker provides one more layer of abstraction and grouping where a machine (or, commonly, a virtual machine) abstracts its resources in order to provide them to thread-like "containers." These containers share their resources with other containers running on a given host. A docker container, written like a spec into a `Dockerfile`, is a way to package your application as if there was a `run.sh` that would install your OS, any dependencies and your application itself -- and, importantly, run that application after everything is installed. The host can choose to surface to the world any ports on the running container, or keep them private to itself. The container draws from the host's pool of resources so long as your application continues to run inside the "thread" managed by docker.
- SlipperySlope 12y agoDocker uses built in features of the Linux kernel to provide namespaces, called containers, in which to run isolated processes. Docker runs on Linux. Each container is built from some Linux distribution in which all system calls are delegated to the underlying Linux. Thus the container is mainly application code as compared to a VM instance in which each instance is a full copy of the OS. Notably, a docker container does not offer a GUI unless you run VNC. So one would not ordinarily develop programs within a container. Docker makes it easy to use features of the Linux kernel that have been around for a while. Expect Microsoft to discover this technique in a couple of years.
- darrelld 12y agoDocker is kind of like a virtual machine, except without all the overhead of the operating system so you have a much smaller package. It also uses Linux containers ( http://en.wikipedia.org/wiki/LXC http://en.wikipedia.org/wiki/LXC) to help with this process. The overall idea is that I can make an app, use Docker to control things like versions of 3rd party apps that your app relies on. So for a web app I can include the version of MySQL, PHP, Ruby etc that I want, and then distribute a "dockerized" version of the app. Now when I distribute for testing or to other servers I don't need to worry about versions. It just works. At least that's what I gather from reading their site last weekend. I plan to start using it for one of our projects soon.