Я только начал изучать Docker, и есть кое-что, что меня очень смущает. Как я читал на веб-сайте 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 и получаем к ней доступ с помощью командной строки.
В любом случае, что это за образы, названные в честь операционных систем? Насколько отличается запуск контейнера с одним из этих образов и запуск виртуальной машины с соответствующей гостевой ОС?
Это идея о том, что мы просто совместно использовать ядро с ОС хоста (и, следовательно, у нас есть доступ к аппаратным ресурсам базовой машины без необходимости виртуализации оборудования), но при этом использовать файлы и двоичные файлы каждой отдельной системы в контейнерах для поддержки любого приложения, которое мы хотим запустить?