I just get started with docker.
I'm a little confused by the concept of base os and base image.
I'm on mac os, so to use docker locally, I have to install docker machine to create a vm to run docker.
from this doc of docker. For local virtualbox, the default base os is boot2docker, and for remote, the default base os is ubuntu 12.04+.
What confusing me is that I can find an ubuntu image on docker hub. My previous understanding is the docker images are just applications which can be run based on a linux os.
- But why there's an image which is a complete os???
What's happening if I run an ubuntu image on an ubuntu os???
Another question is: docker container will share the same OS kernel, that's why the cost of running a docker container is very low.
-
which kernel they're sharing?? Is it the kernel of the host OS(base os: boot2docker) or the kernel of the OS image (ubuntu image)???
-
If they're sharing the host OS's kernel, what it means when I run a ubuntu OS container on top of an ubuntu host OS???
-
boot2docker is a stipe-down version of linux OS, does it have all the things that a random container needs??? if yes, then why use ubuntu base OS???
Best Answer
Those are two different environments, as I described in "Container as a Service (Caas)":
To use a different base operating system on a remote provider, specify the provider’s image flag and one of its available images. For example, to select a
debian-8-x64
image on DigitalOcean you would supply the --digitalocean-image=debian-8-x64 flag.In all environments, the goal is to provide a Linux kernel recent enough to support docker feature, allowing any docker image to delegate its system calls to the kernel.