Why docker has ability to run different linux dist

2019-01-21 08:37发布

问题:

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?

回答1:

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:

  • memory management
  • network management
  • device driver
  • file management
  • process management

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).



回答2:

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.



标签: linux docker