Docker desktop что это такое

Docker для фронтендера. Часть 2. Что ты такое?

Продолжаю делать расшифровку своего доклада Docker для фронтендера с конференции FrontendConf 2019.

В предыдущей части я постарался ответить на вопрос, зачем фронтенд-разработчику может понадобиться Docker. Сегодня попытаюсь простым языком рассказать, что это за инструмент, как он работает, и сравнить его с другими известными во фронтенде понятиями.

Содержание

Что ты такое?

Кто не знает, что такое Docker, представляют его себе по-разному.

Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такое

Кто-то думает, что это средство для установки контейнера на машину.

Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такое

Под анонсом в ВК предыдущей части этой статьи появилась пара шуточных комментариев.

Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такое

И только сисадмины, похоже, что-то знают.

Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такое

Ребята из Docker, Inc представляют нам этот инструмент через маркетинговый слоган:

Отлаживайте ваше приложение, а не среду
Безопасно собирайте, делитесь и запускайте любое приложение где угодно

Она немного лукавят. Собирать, делиться и запускать действительно можно. Но с «безопасно» и с «где угодно» дела обстоят не совсем так.

Про проблемы с безопасностью можно узнать, например, в этой статье, а про «где угодно» я расскажу чуть дальше.

Виртуализация

Возможность виртуализации появилась достаточно давно.

Когда я занимался разработкой в 2012 году, моя команда делала проекты на Ruby on Rails. У меня возникала необходимость запускать у себя на ноутбуке такие вещи, как Ruby, MySQL, PostgreSQL. Это всё довольно плохо работало под Windows, поэтому приходилось использовать виртуализацию.

Тогда существовали такие решения, как VirtualBox, VMware Workstation, Vagrant. Всё рабочее окружение выносилось на виртуалку, а в хост-системе оставались только IDE, Git, браузер.

Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такое

Вот эта схема, взятая из документации Docker, как раз показывает, как работают виртуальные машины (VM).

У нас есть Infrastructure (наш компьютер) и Hypervisor (VMWare, VirtualBox или ещё что-то). И на всём этом мы запускаем виртуальную машину, которая включает гостевую операционную систему (Guest OS), нужные библиотеки (Bins/Libs) и наше приложение (App).

Естественно, что сами виртуальные машины получались очень большие и неповоротливые. Накладные расходы на обслуживание виртуалки были высоки. Мой ноутбук с трудом всё это вывозил.

Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такое

Docker, Inc предложили нам не тянуть в виртуальный контейнер гостевую операционную систему, а пользоваться хост-системой и получать изоляцию процессов при помощи механизма контрольных групп (cgroups) в Linux.

Это значительно уменьшило размеры образов. Например, образ alpine:3.11.0 (дистрибутив Linux, ориентированный на безопасность, легковесность и нетребовательность к ресурсам) весит всего 2.5 MB, а docker-образ с node:alpine — всего 27 MB.

Т.е. наш сайт/приложение вполне можно запаковать в 30 MB образ, который достаточно будет запустить в Docker, и он будет работать где угодно? Да, но есть нюансы.

Установка Docker

Docker распространяется в двух изданиях: Community Edition (CE) и Enterprise Edition (EE). Нам нужен Docker CE, т.к. он бесплатный и решает все нужные нам задачи.

А ещё Docker бывает Desktop и Server.

Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такое

Server

Server-версии предназначены для установки на Linux и поддерживают 4 дистрибутива и только некоторые архитектуры. Поэтому заявление, что вы можете запустить docker-контейнер «где угодно» не совсем корректно.

Desktop

Desktop-версии предназначены для установки на компьютеры разработчикам. И это то, что нам будет помогать во время разработки наших классных приложений. В частности, я использую Docker Desktop for Mac.

Установка на компьютер выглядит максимально привычно для пользователя Mac.

Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такое

Ну или, если вы любите Homebrew.

После этого приложение становится доступно в верхней строке состояния (top status bar) и из консоли.

Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такое

Нюанс заключается в том, что контрольные группы (cgroups) Linux отсутствуют на Mac и Windows (сюрприз, сюрприз), поэтому Docker Desktop использует Mac OS Hypervisor framework и Microsoft Hyper-V, соответственно.

Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такое

То есть для поддержки виртуализации придётся отдать ещё примерно 4 GB оперативной памяти. Зато потом работающие контейнеры уже будут заниматься гораздо меньше места, чем если бы они были запущены на отдельных виртуальных машинах.

Вывод команды docker stats :

Видим, что БД заняла 19 МБ, а API на Java — 352 МБ.

Что входит в Docker Desktop

Docker разрабатывается в виде модульной архитектуры, поэтому устанавливая Docker Desktop, вы получаете сразу несколько программ.

Docker Engine

Docker Engine включает в себя инструменты для построения контейнеров, реестр контейнеров, инструменты оркестрации, среду выполнения и многое другое. Это проект с открытым исходным кодом, написанный на Go. Он запускается как daemon, который предоставляет RESTful API для выполнения команд.

Такое решение позволяет управлять контейнерами почти откуда угодно, например, из браузера, Node.js или даже из Minecraft.

Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такое

Docker CLI client

Консольный клиент для Docker Engine API.

Тоже проект с открытым исходным кодом, написанный на Go.

Docker Compose

Инструмент для описания и запуска мультиконтейнерных приложений. Чрезвычайно полезная вещь в разработке.

Позволяет почувствовать себя SRE. Написан, естественно, на Python.

Docker Machine

Инструмент для управления удалёнными хостами, на которых установлен Docker. Нами в разработке не используется, но идёт в комплекте с остальным.

Kitematic

Графический интерфейс для Docker Engine API с открытым исходным кодом, написанный на JavaScript (Electron).

Идеально для тех, кто не любит консоль и даже для GIT использует графический интерфейс.

Инструмент довольно сырой, но рабочий (v0.17.9, > 800 открытых issues).

Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такое

Docker — это не только для админов

Теперь немножко вольных аналогий для фронтенд-разработчиков, чтобы показать, что этот инструмент имеет много общего с привычными для нас, фронтендеров, вещами, такими как Node.js и NPM.

Image

Dockerfile

docker build

DockerHub

Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такое

docker run

Проект начат как проприетарная разработка

Проект Docker начат в 2008 году как внутренняя собственническая разработка компании dotCloud и лишь в марте 2013 был опубликован в open source.

У нас есть Node.js, который хоть и был изначально open source, но до февраля 2015 года и скандальной истории с io.js находился под управлением компании Joyent.

Используется для всего подряд

Все мы знаем, что NPM — это Node Package Manager. Раньше так и было, но сейчас там лежат пакеты не только для Node.js, но и для браузера.

А ещё там могут лежать не пакеты. При желании туда можно положить набор шрифтов или даже фильм.

Тоже самое с DockerHub. Туда можно опубликовать что угодно. Никакой премодерации нет.

Есть альтернативы, призванные заменить

Все мы знаем, что есть альтернативные менеджеры пакетов, который вы можете использовать, если вам не нравится NPM. Это Yarn, pnpm, jspm.

Docker тоже можно заменить на альтернативы. Например, Podmad или Buildah.

Немного рецептов

Надеюсь, я смог в общих чертах рассказать про этот инструмент.

В следующей части планирую показать рецепты и конкретные кейсы использования Docker для фронтендера.

Источник

Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такое

Эта статья даст вам полное представление о Docker Desktop для пользователей Windows и MAC. Мы изучим установку Docker Desktop на компьютерах с Windows и Mac. После установки мы также попытаемся выполнить некоторые операции Docker.

Что такое Docker Desktop?

Docker Desktop предлагает важные и наиболее полезные функции, такие как быстрые циклы редактирования, уведомления об изменениях файлов, встроенная поддержка корпоративной сети и гибкость для работы с собственным выбором прокси и VPN.

Docker Desktop состоит из инструментов для разработчика, приложения Docker, Kubernetes и синхронизации версий. Он позволяет вам создавать сертифицированные образы и шаблоны языков и инструментов.

Прежде чем перейти к процессу установки, давайте разберемся с его версиями.

Версии Docker

Docker в основном поставляется в двух версиях, в Community и ENterprise.

Community версия поставляется с бесплатным набором продуктов Docker. ENterprise корпоративная версия представляет собой сертифицированную контейнерную платформу, которая предоставляет коммерческим пользователям дополнительные функции, такие как безопасность образов, управление образами, оркестровка и управление средой выполнения контейнеров, но по разумной цене.

Мы начнем наше обучение с Community Edition. Контейнеры Docker, работающие в конкретной операционной системе, совместно используют ядро ​​ОС. Это означает, что мы не можем использовать ядро ​​Windows (хост) для запуска контейнеров Linux или наоборот. Чтобы проделать это, у нас есть Docker Desktop для Windows и MAC.

Выпуски Docker Desktop

Docker Desktop выпускается в двух вариантах.

Docker на Windows

Есть два варианта Docker на Windows.

1. Использование Docker Toolbox

Docker Toolbox предоставляет набор легких инструментов.

Вышеуказанные инструменты устраняют необходимость развертывания отдельной виртуальной машины для запуска Docker. Просто установите исполняемый файл панели инструментов Docker непосредственно в Windows и начните разработку приложений. Требуется 64-битная ОС и Windows 7 или выше с включенным режимом виртуализации.

2. Использование Docker Desktop

Он по-прежнему будет запускать Docker на Linux-машине, созданной под ним. Но на этот раз вместо виртуальной машины Oracle мы использовали нативный Microsoft Hyper-V.

Установка Docker на Windows

Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такое

Чтобы запустить Hyper-V, оборудование должно соответствовать следующим требованиям:

Следовательно, программная и аппаратная зависимость заключается в запуске Docker Desktop на Windows.

Установка Docker на macOS

Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такое

Работа с образами

После установки проверьте версию установленного Docker Engine.

Здесь мы будем тянуть образ Redis.

Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такое

С помощью простой команды run образы можно скачивать и загружать на GitHub или Docker Hub, и любой пользователь во всем мире может получить к нему доступ и начать работать с ним.

Docker Container запускает образ Docker. Следующим шагом является запуск контейнера.

Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такое

Будет создан зашифрованный идентификатор контейнера. Вы можете быстро проверить состояние работающего экземпляра в Docker, нажав на Dashboard option.

Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такое

Обязательно остановите контейнер, прежде чем удалять его из Docker Engine.

Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такое

Возможности Docker Desktop

Существует множество преимуществ:

Источник

Docker под Windows для разработки, разбор подводных камней

Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такоеДанная публикация является разбором особенностей контейнерной виртуализации Docker под системой Windows.

Она не претендует на роль исчерпывающей и по мере необходимости будет обновляться и дополняться.

За практическим руководством с нуля советую обратиться к этой публикации.

Содержание

Предварительные настройки

Контейнерная виртуализация или виртуализация на уровне операционной системы Docker нативно работает только на дистрибутивах Linux и FreeBSD (экспериментально).
На Windows вам понадобится гостевая Linux система либо специальная минималистичная виртуальная машина с ядром Linux от разработчиков Docker, которая и ставится из коробки.
Само собой разумеется, что вы включили виртуализацию у себя в BIOS/UEFI
Пункт настройки может называться по-разному: VT-x, VT-d, Intel VT, AMD-V, Virtualization Technology.

Еще одним минимальным системным требованием будет разрядность системы x64 и версия не ниже Windows 7 Pro.

Выбор между Docker Toolbox on Windows или Docker for Windows

Сборка включается в себя сам docker, утилиту docker-compose, утилиту для работы с виртуальной машиной docker-machine и клиент Kitematic.

Используется виртуальная машина (по умолчанию на VirtualBox) с минималистичным Linux окружением.

Позже для новых операционных систем выпустили Docker for Windows и Docker for Mac, которая на текущий момент является актуальной версией и продолжает развиваться.

Выбор между версиями не сложный:
— Если у вас Windows 10 x64 Pro, Enterprise или Education то включаем службу Hyper-V и ставим Docker for Windows.

Заметьте, что после включения службы Hyper-V пропадет возможность запускать и создавать x64 виртуальные машины на VirtualBox.

— Если же у вас другая версия Windows(7 Pro, 8, 8.1, 10 Home) то ставим VirtualBox и Docker Toolbox on Windows.

Несмотря на то, что Docker Toolbox разработчиками признан устаревшим работа с ним слабо отличается от Docker for Windows.

Вместе с установкой Docker Toolbox будет создана виртуальная машина.
В самом VirtualBox можно будет добавить оперативной памяти и ядер процессора на ваше усмотрение.

Windows контейнеры и Linux контейнеры

Docker for Windows предоставляет возможность переключать контейнеризацию между Linux и Windows версией.

В режиме Windows контейнеризации вы можете запускать только Windows приложения.
Замечу, что на май 2018 года в официальном Docker Hub существует всего 13 образов для Windows.

После включения Windows контейнеризации не забудьте добавить внешнюю сеть.

В конфигурационном файле docker-compose.yml это выглядит так:

Особенности монтирования папок

На примонтированных volume-ах не кидаются события файловой системы, поэтому inotify-tools не работает.
Спасибо пользователю eee

Если вы разрабатываете свой проект и пользуетесь docker-compose вне домашней папки то вам нужно будет проделать некоторые манипуляции.

Используя Docker for Windows для монтирования нового диска у вашего локального пользователя обязательно должен стоять пароль, который будет использоваться для доступа к shared папки.

Особенность заключается в том, что монтируемые внутрь контейнера диск будет монтироваться как от удаленной машины //10.0.75.1/DISK_DRIVE по протоколу SMB.

Для Docker Toolbox диски монтируются в самом VirtualBox на вкладке «Общие папки»
Пример для диска «D»:

Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такое

Права доступа к монтируемым файлам и папкам

Как бы вам не хотелось, но для всех примонтированных из хост-машины файлов и папок будут стоять права 755 (rwx r-x r-x) и поменять их вы не сможете.

Остро встает вопрос при монтировании внутрь файла закрытого SSH ключа, права на который должны быть только у владельца(например 600).

В данном случае либо генерируют ключ при создании образа, либо прокидывают сокет ssh-agent с хост-машины.

Монтирование с хост-машины или volume

Монтирование внутрь контейнера происходит с использованием сети и протокола SMB, следовательно, внутри контейнера диск «D:\» будет примонтирован из источника //10.0.75.1/D
Использование volume внутри контейнера отображается как монтирование локального диска /dev/sda1, что влияет на скорость работы.

Простым тестом копирование файла на обычном HDD скорость работы получилась следующая:

Такая разница в скорости скорее всего связана с тем, что в volume данные сбрасываются на диск постепенно, задействуя кеш в ОЗУ.

Особенности разметки диска GPT и MBR

Данный пункт не является истинной так как опровергающей или подтверждающей информации в интернете найти не смог.

Если на хост-машине таблица разделов MBR, то контейнер с MySQL/MariaDB может упасть с ошибкой:

По умолчанию в базе данных включеён параметр innodb_use_native_aio, отвечающий за асинхронный ввод/вывод и его надо будет выключить.

Данная проблема также встречается на некоторых версиях MacOS.

Docker Toobox to Windows

Главное правило: начинать работу с запуска ярлыка на рабочем столе «Docker Quickstart Terminal», это решает 80% проблем.

— Бывает возникают проблемы с отсутствия переменных окружения, решается командой:

— Если все же возникают проблемы из разряда «docker: error during connect», необходимо выполнить:

Название Docker Machine по умолчанию default.

Docker Swarm

Ни в Docker for Mac, ни в Docker for Windows — нет возможности использовать запущенные демоны в качестве клиентов кластера (swarm members).
Спасибо пользователю stychos

Проблемы с кодировкой

Используя Docker Toolbox(на Docker for Windows не удалось воспроизвести) нашлась проблема с тем, что русские комментарии в docker-compose.yml файле приводили к ошибке:

Полезные ссылки

Заключение

Особенности работы с Docker контейнеризацией на системе Windows не отличается от работы на Linux за исключение разобранных выше.

В статье я умышленно не упомянул заметно низкую скорость работы контейнеров и overhead используя систему Windows как само собой разумеющееся.

Буду рад услышать ваши отзывы. Не стесняйтесь предлагать улучшения или указывать на мои ошибки.

Источник

Что такое Docker?

Docker — это проект с открытым исходным кодом для автоматизации развертывания приложений в виде переносимых автономных контейнеров, выполняемых в облаке или локальной среде. Одновременно с этим, Docker — это компания, которая разрабатывает и продвигает эту технологию в сотрудничестве с поставщиками облачных служб, а также решений Linux и Windows, включая корпорацию Майкрософт.

Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такое

Рис. 2-2. Docker развертывает контейнеры на всех уровнях гибридного облака.

Контейнеры Docker могут работать в любой среде, например в локальном центре обработки данных, в службе стороннего поставщика или в облаке Azure. Контейнеры образов Docker работают в исходном формате в Linux и Windows. Но образы Windows будут выполняться только на узлах Windows, тогда как образы Linux — на узлах Linux или Windows (на данный момент с помощью виртуальной машины Linux Hyper-V). Термин «узлы» здесь означает физические серверы и виртуальные машины.

Разработчики могут использовать среды разработки на базе Windows, Linux или macOS. На компьютере разработчика выполняется узел Docker, где развернуты образы Docker с создаваемым приложением и всеми его зависимостями. Разработчики, работающие в Linux или macOS, могут использовать узел Docker на базе Linux и создавать образы только для контейнеров Linux. (В macOS разработчики могут изменять код приложения и запускать Docker CLI в macOS, но на момент написания этой статьи они не могут запускать контейнеры непосредственно в macOS.) В Windows разработчики могут создавать образы для контейнеров Linux или Windows.

Docker предоставляет Docker Desktop для Windows и macOS, позволяя размещать контейнеры в среде разработки и использовать дополнительные средства разработки. Оба продукта устанавливают необходимую виртуальную машину (узел Docker) для размещения контейнеров.

Для выполнения контейнеров Windows есть среды выполнения двух типов:

Контейнеры Windows Server изолируют приложение с помощью технологии изоляции процесса и пространства имен. Контейнер Windows Server использует ядро совместно с узлом контейнеров и всеми остальными контейнерами на узле.

Контейнеры Hyper-V увеличивают изоляцию, обеспеченную контейнерами Windows Server, запуская каждый контейнер в оптимизированной виртуальной машине. В этой конфигурации ядро узла контейнера не используется совместно с контейнерами Hyper-V, что улучшает изоляцию.

Образы для этих контейнеров создаются и работают одинаково. Различие заключается лишь в том, что для создания контейнера из образа с контейнером Hyper-V нужен дополнительный параметр. Дополнительные сведения см. в разделе Контейнеры Hyper-V.

Сравнение контейнеров Docker с виртуальными машинами

На рисунке 2-3 показано сравнение между виртуальными машинами и контейнерами Docker.

Виртуальные машиныКонтейнеры Docker
Docker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такоеDocker desktop что это такое. Смотреть фото Docker desktop что это такое. Смотреть картинку Docker desktop что это такое. Картинка про Docker desktop что это такое. Фото Docker desktop что это такое
Виртуальные машины содержат приложение, необходимые библиотеки или двоичные файлы и всю операционную систему. Полная виртуализация требует больше ресурсов, чем создание контейнеров.Контейнеры включают в себя приложение и все его зависимости. Но они используют ядро ОС совместно с другими контейнерами, которые выполняются в изолированных процессах в пользовательском пространстве операционной системы узла. (Это не относится к контейнерам Hyper-V, где каждый контейнер запускается на отдельной виртуальной машине.)

Рис. 2-3. Сравнение традиционных виртуальных машин с контейнерами Docker

Для виртуальных машин на сервере узла создается три базовых уровня: самый нижний инфраструктурный слой; затем операционная система узла и низкоуровневая оболочка; и поверх этого каждая виртуальная машина использует собственную ОС и все необходимые библиотеки. Для Docker сервер узла предоставляет только инфраструктуру и операционную систему, а также ядро контейнеров, которое изолирует контейнер с использованием базовых служб операционной системы.

Так как контейнеры требуют гораздо меньше ресурсов (например, им не нужна полная ОС), их проще развертывать и они быстрее запускаются. Это позволяет повысить плотность развертываний, то есть запустить на одной единице оборудования больше служб и сократить затраты на них.

Запуск на одном ядре приводит к тому, что уровень изоляции будет ниже, чем на виртуальных машинах.

Основная цель образа — привести среду (зависимости) к единообразию в различных развертываниях. Это означает, что вы можете отладить образ на одном компьютере, а затем развернуть его на другом компьютере и получить ту же среду.

Образ контейнера — это способ упаковки приложения или службы для надежного и воспроизводимого развертывания. Можно сказать, что Docker является не только технологией, но еще философией и процессом.

При работе с Docker разработчики никогда не жалуются, что приложение работает только на локальном компьютере, но не в рабочей среде. Им достаточно сказать «Выполняется в Docker», так как упакованное приложение Docker будет выполняться в любой поддерживаемой среде Docker. Оно будет работать одинаково во всех сценариях развертывания (разработка, контроль качества, промежуточное размещение и рабочая среда).

Простая аналогия

Возможно, небольшая аналогия поможет вам быстрее освоить ключевую концепцию Docker.

Вернемся ненадолго назад во времени, в 1950-е годы. Тогда еще не было текстовых редакторов, и повсеместно использовались фотокопировальные устройства (то есть то, что тогда так называлось).

Представьте, что вам понадобилось быстро подготовить наборы писем, чтобы отправить их с обычной бумажной почтой в настоящих конвертах с марками и доставить по домашнему адресу клиента (не забывайте, еще не существует электронной почты).

В какой-то момент вы понимаете, что каждое письмо составлено из широкого набора абзацев, которые выбираются и упорядочиваются по мере необходимости с учетом назначения письма. Вы создаете систему, которая быстро создает нужные письма, и обоснованно надеетесь на существенную прибавку.

Вы создали простую систему со следующим алгоритмом:

У вас есть пачка прозрачных листов, каждый из которых содержит один абзац.

Чтобы подготовить комплект писем, вы отбираете листы с нужными абзацами, собираете их в стопку и выравниваете так, чтобы все правильно читалось.

Теперь вы помещаете готовый набор в фотокопировальное устройство и нажмите кнопку запуска, чтобы изготовить нужное количество копий.

Это и есть основная концепция Docker в упрощенной форме.

В Docker каждый слой представляет некоторый набор изменений, которые применяются к файловой системе после выполнения команды, такой как установка программы.

Если вы «посмотрите» на файловую систему после копирования очередного слоя, вы увидите все файлы в том состоянии, которое они приняли после установки программы.

Такой образ можно рассматривать как дополнительный жесткий диск, доступный только для чтения, который готов к установке на «компьютер» с уже установленной операционной системой.

Соответственно, роль «компьютера» здесь выполняет контейнер, в который устанавливается жесткий диск этого образа. Контейнер, как и обычный компьютер, можно включать и отключать.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *