Почему у docker есть возможность запускать разные дистрибутивы Linux?

Мы можем использовать докер для извлечения разных изображений. И эти образы отличаются дистрибутивом Linux. Но независимо от того, на каком дистрибутиве linux distro запущен, docker может запускать эти разные дистрибутивы linux, как на виртуальной машине.

Я знаю, что Docker использует aufs для управления различным уровнем доступа для чтения и записи. Таким образом, он может повторно использовать некоторые файлы на хост-машине. Но как можно запустить докер apt-get в контейнере, когда мой хозяин работает arch linux? Содержит ли изображение apt-get двоичная? Но разные дистрибутивы Linux имеют разные библиотеки и версии программного обеспечения. Даже конфигурационный файл отличается. Как Docker может "запустить" Ubuntu в Arch Linux?

2 ответа

Решение

Потому что ядро ​​то же самое.

Общая точка всех дистрибутивов Linux и то, почему они называются linux, заключается в том, что все они используют ядро ​​Linux.

Контейнеры используют то же ядро, что и хост, поэтому вы можете запустить образ Arch на хосте Ubuntu.

Вот обзор Linux.

Ядро является частью операционной системы, которая осуществляет связь с оборудованием. Это самый низкий уровень операционной системы. Вот список основных функций ядра:

  • управление памятью
  • управление сетью
  • драйвер устройства
  • управление файлами
  • управление процессом

Поэтому, когда вы используете контейнер, у вас есть доступ только к ядру хоста, так как это единственная часть, которая взаимодействует с оборудованием, если ваша ОС использует хорошие syscall, вы можете запустить любой дистрибутив Linux внутри вашего контейнера. (Это причина того, что вы не можете использовать Windows внутри контейнера: он не использует тот же syscall).

Да, чтобы вы могли запускать apt-get, изображения должны содержать apt-get. В каждом образе может быть установлено различное программное обеспечение. Таким образом, вы можете установить образ Arch Docker или образ Ubuntu, например. Вы можете искать общедоступные изображения, используя следующую команду.

docker search <your search term>

поэтому для поиска образа Ubuntu вы можете использовать

docker search ubuntu

Я бы рекомендовал следовать руководству по докеру и внимательно читать все инструкции и ссылки слева по мере прохождения.

Другие вопросы по тегам