Docker ?

Discussion in 'WASM.BEGINNERS' started by asmlamo, Apr 26, 2022.

  1. asmlamo

    asmlamo Well-Known Member

    Blog Posts:
    0
    Joined:
    May 18, 2004
    Messages:
    1,742
    Есть модная технология Docker.
    Типа система контейнерной виртуализации.
    Есть несколько непоняток.
    Непонятно почему образы такие огромные.
    К примеру обычная инсталяция Питона на Винде весит около 100 Мб.
    А образ под Докер уже 700-800 Мб.

    Далее сам по себе Докер не работает ..ему нужна нормальная виртуалка типа Vbox или подобная.
    Это значит что там Докер ставит в виртуалку некую ОС типа мини Линукса без GUI а потом туда накатывает все остальное ... формируя образ.
    Или я не прав ?
    А если я прав ..то какая это контейнерная виртуализация ?
     
  2. HoShiMin

    HoShiMin Well-Known Member

    Blog Posts:
    5
    Joined:
    Dec 17, 2016
    Messages:
    1,486
    Location:
    Россия, Нижний Новгород
    Докер упаковывает в контейнер не только приложение, но и окружение, в котором это приложение будет работать - фактически делает снапшот всей системы.
    А в окружение входит юзермодная часть операционной системы и все необходимые зависимости софта, который ты хочешь контейнеризовать.
    Проще говоря, в контейнер входит условно полноценный образ операционки вместе с твоим приложением. Поэтому образы такие большие.
    В этом и смысл докера: завернуть в контейнер не только процесс, но и его окружение - так, чтобы на любой хостовой системе это приложение работало одинаково и не зависело от хоста.

    Изначально он разрабатывался под Linux, в котором контейнеры разделяют ядро с хостом.
    На линуксе в докере не используется виртуализация: процессы изолированы от остальной системы средствами самого линукса, и потерь производительности нет.
    Процессы в докере и процессы на хосте для ядра линукса равнозначны - различаются лишь окружением, которое видят эти процессы.

    На винде такой возможности нет, поэтому на помощь приходит аппаратная виртуализация.
    Гипервизор запускает полноценное NT-ядро или ядро Linux, в зависимости от того, контейнер с какой системой ты хочешь запустить, и контейнеры запускаются поверх него, разворачивая для ядра юзермодное окружение, в котором будет работать твой контейнеризованный процесс.
     
    youneuoy likes this.
  3. asmlamo

    asmlamo Well-Known Member

    Blog Posts:
    0
    Joined:
    May 18, 2004
    Messages:
    1,742
    То есть в Винде Докер работает через аппаратную виртуализацию по любому?
     
  4. HoShiMin

    HoShiMin Well-Known Member

    Blog Posts:
    5
    Joined:
    Dec 17, 2016
    Messages:
    1,486
    Location:
    Россия, Нижний Новгород
    Да, всегда, независимо от того, запускаешь ты в нём контейнер с виндой или контейнер с линуксом
     
    2Hard2Forget likes this.