Я только начал изучать Докер, и меня это смущает. Как я читал на сайте Docker, контейнер отличается от виртуальной машины. Как я понял, контейнер - это просто песочница, внутри которой запускается целая изолированная файловая система.
Я также читал, что в контейнере не установлена гостевая ОС. Вместо этого он опирается на ядро ОС.
Все это хорошо. Меня смущает, что существуют образы Docker, названные в честь операционных систем. Мы видим такие изображения, как Ubuntu, Debian, Fedora, CentOS и так далее.
Моя точка зрения: что это за изображения на самом деле? Чем отличается создание контейнера на основе образа Debian от создания виртуальной машины и установки Debian?
Я думал, что в контейнерах не было гостевой ОС, но когда мы создаем образы, мы основываем их на некотором образе, названном в честь одной ОС.
Кроме того, в примерах, которые я видел, когда мы это делаем docker run ubuntu echo "hello world"
, кажется, что мы раскручиваем виртуальную машину с Ubuntu и заставляем ее запускать команду echo "hello world"
.
Таким же образом, когда мы это делаем docker run -it ubuntu /bin/bash
, кажется, что мы раскручиваем виртуальную машину с Ubuntu и обращаемся к ней с помощью командной строки.
В любом случае, как называются эти образы в честь операционных систем? Насколько отличается запуск контейнера с одним из этих образов и раскрутка виртуальной машины с соответствующей гостевой ОС?
Идея состоит в том, что мы просто разделяем ядро с хост-ОС (и, следовательно, у нас есть доступ к аппаратным ресурсам базовой машины, без необходимости виртуализации оборудования), но все еще используем файлы и двоичные файлы каждой отдельной системы в контейнерах для поддерживать любое приложение, которое мы хотим запустить?