Why docker has ability to run different linux distribution?
We can use docker to pull different images. And these images are different linux distribution. But no matter which linux distro docker is running on, docker can run these different linux distribution just like in a virtual machine.
I know docker uses aufs to control different read-write access level. So it can reuse some file on the host machine. But how can docker run apt-get
in a container when my host runs arch linux
? Does the image contain the apt-get
binary? But different linux distribution have different libs and software version. Even the configuration file are different.How can docker "run" ubuntu in a arch linux?
Because the kernel is the same.
The common point of all linux distributions, and why they are called linux, is because they all use the linux kernel.
Containers share the same kernel as the host, that's why you can run an Arch image on a Ubuntu host.
Here's an overview of Linux.
The kernel is a part of the operating system that handles communication with the hardware. It's the lowest level of the operating system. Here is a list of the main functions of the kernel:
So when you use a container you only have access to the kernel of the host, since it's the only part that communicates with hardware, as long as your OS uses the good syscall
, you are able to run any linux distribution inside your container. (This is the reason you can't use Windows inside a container: it's not using the same syscall
).
Yes the images will have to contain apt-get for you to be able to run apt-get. Each image can have different software installed inside it. So you could install an Arch docker image or an ubuntu image for example. You can search for public images using the following command.
docker search <your search term>
so to search for an ubuntu image you could use
docker search ubuntu
I'd recommend following through the docker tutorial and carefully reading all the instructions and links on the left as you go through.
链接地址: http://www.djcxy.com/p/2994.html上一篇: 从虚拟机虚拟机寻址本地主机