Почему у 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
Я бы рекомендовал следовать руководству по докеру и внимательно читать все инструкции и ссылки слева по мере прохождения.