Linked by Thom Holwerda on Fri 25th May 2018 17:21 UTC
Linux

Have you ever tried to install Minecraft and seen an error message like, "This application requires a Java Runtime Environment 1.6.0"? Or you try to install something on Windows, and you get an error that says some .NET framework is missing? Or, as a more basic example, have you ever spent a couple hours setting up a new computer with all your applications and preferences?

Those are the kinds of problems Docker, and "containers" more broadly (Docker is kind of the Kleenex of containers), are meant to solve. Docker makes it easy to install Linux applications on servers, along with their required dependencies and whatever preferences you might have for those applications. And, as an added bonus, conflicting dependencies between applications (maybe one app relies on Python 2, and another app relies on Python 3) aren't an issue, because everything is isolated in different containers.

Permalink for comment 657421
To read all comments associated with this story, please click here.
RE: So chroot()
by grat on Sat 26th May 2018 05:05 UTC in reply to "So chroot()"
grat
Member since:
2006-02-02

OK-- While we're at it, let's set up that chroot with it's own network interface using a local, private subnet to communicate with other chroot's.

And now, let's see you share data between them.

If you haven't played with docker, comparing it with package managers, chroots, or even jails, is totally inadequate.

Calling it a lightweight version of vagrant would be better, but that doesn't describe it either.

I do a lot of puppet development-- we manage around 250 machines at any given time with puppet.

I've moved my puppet server environment (puppetdb, puppetserver, puppetboard) all into a docker environment managed by docker-compose. Each service has it's own container, with exactly the number of libraries needed to run. Ports needed for internal communication are only available on the private 172.x.x.x/24 network, and all configuration data is external to the container(s) so I can delete / recreate the containers at any time.

The really cool part is that I can take a copy of the data, move it to a test system, build a totally private copy of the puppet server, and test it with docker containers for each OS/version combination I support in my environment.

I can then automate that process, and have my gitlab server run a series of automated tests inside a docker environment to verify the code is legitimate before pushing it out to my production puppet server.

Compiling the Android OS (don't ask why) requires specific versions of Ubuntu-- if you want to compile Android 6, you have to do it under Ubuntu 14.04, in a fairly customized environment. You could create a VM guest, but now you have to allocate enough memory and CPU to the VM.

Or you can grab a prebuilt Ubuntu 14.04 docker container, with build script, and build it inside the container, regardless of what OS you're using (heck, using docker and WSL, you could do it under Windows 10, but, WHY?!?!?).

I've used chroot, jails, vagrant, vmware, virtualbox-- each is a tool, with it's own purpose.

docker is a different tool.

Reply Parent Score: 6