Почему у докеров есть возможность запускать различный дистрибутив Linux?
Мы можем использовать докер, чтобы тянуть разные изображения. И эти образы отличаются от дистрибутива Linux.
Но независимо от того, какой linux distro docker работает, докер может запускать эти разные дистрибутивы Linux, как на виртуальной машине.
Я знаю, что docker использует aufs, чтобы контролировать уровень доступа к чтению и записи. Поэтому он может повторно использовать некоторый файл на главной машине. Но как docker может запустить команду apt-get
в контейнере, когда я запускаю docker в arch linux
? Является ли образgs содержать двоичный код apt-get
? Но у разных дистрибутивов Linux есть разные версии libs и программ. Даже файл конфигурации отличается. Как докеры могут "запускать" ubuntu в арку linux?
Ответы
Ответ 1
Потому что ядро одно и то же.
Общая точка всех дистрибутивов Linux и почему они называются linux, заключается в том, что все они используют ядро linux.
Контейнеры используют одно и то же ядро как хост, поэтому вы можете запускать образ Arch на узле Ubuntu.
Вот обзор Linux.
Ядро является частью операционной системы, которая обрабатывает связь с оборудованием. Это самый низкий уровень операционной системы. Вот список основных функций ядра:
- Управление памятью
- управление сетью
- драйвер устройства
- управление файлами
- управление процессами
Поэтому, когда вы используете контейнер, у вас есть только доступ к ядру хоста, поскольку он является единственной частью, которая взаимодействует с оборудованием, если ваша ОС использует хороший syscall
, вы можете запускать любой дистрибутив Linux внутри вашего контейнера. (По этой причине вы не можете использовать Windows внутри контейнера: он не использует тот же syscall
).
Ответ 2
Да, изображения должны содержать apt-get для того, чтобы вы могли запускать apt-get. Каждое изображение может иметь в нем различное программное обеспечение. Таким образом, вы можете установить изображение докеры Arch или образ ubuntu, например. Вы можете искать общедоступные изображения, используя следующую команду.
docker search <your search term>
поэтому для поиска изображения ubuntu вы можете использовать
docker search ubuntu
Я бы посоветовал вам выполнить учебник докеров и внимательно прочитать все инструкции и ссылки слева, когда вы проходите.