Что такое docker hub
Docker Hub
The world’s leading service for finding and sharing container images with your team and the Docker community.
Share and Collaborate with Docker Hub
Docker Hub is the world’s largest repository of container images with an array of content sources including container community developers, open source projects and independent software vendors (ISV) building and distributing their code in containers. Users get access to free public repositories for storing and sharing images or can choose subscription plan for private repos.
Private Repositories to Share Container Images
Docker Hub is a hosted repository service provided by Docker for finding and sharing container images with your team. Key features include:
The World’s Largest Community of Container Images
Docker Hub is the central meeting place for container community developers, open source projects and independent software vendors (ISV) building and distributing their code in containers.
For Developers: Store and share your personal projects and see what the container community is building.
For Teams: Leverage private repositories to restrict content to specific users or teams.
For ISVs: Reduce friction for your developer audience. Make your software available to your customers and users with a single docker pull command.
For Enterprises: Choose certified containers from validated ISVs with cooperative support so you have the assurance to run in your production environment.
Понимая Docker
Уже несколько месяцев использую docker для структуризации процесса разработки/доставки веб-проектов. Предлагаю читателям «Хабрахабра» перевод вводной статьи о docker — «Understanding docker».
Что такое докер?
Докер — это открытая платформа для разработки, доставки и эксплуатации приложений. Docker разработан для более быстрого выкладывания ваших приложений. С помощью docker вы можете отделить ваше приложение от вашей инфраструктуры и обращаться с инфраструктурой как управляемым приложением. Docker помогает выкладывать ваш код быстрее, быстрее тестировать, быстрее выкладывать приложения и уменьшить время между написанием кода и запуска кода. Docker делает это с помощью легковесной платформы контейнерной виртуализации, используя процессы и утилиты, которые помогают управлять и выкладывать ваши приложения.
В своем ядре docker позволяет запускать практически любое приложение, безопасно изолированное в контейнере. Безопасная изоляция позволяет вам запускать на одном хосте много контейнеров одновременно. Легковесная природа контейнера, который запускается без дополнительной нагрузки гипервизора, позволяет вам добиваться больше от вашего железа.
Для чего я могу использовать docker?
Быстрое выкладывание ваших приложений
Docker прекрасно подходит для организации цикла разработки. Docker позволяет разработчикам использовать локальные контейнеры с приложениями и сервисами. Что в последствии позволяет интегрироваться с процессом постоянной интеграции и выкладывания (continuous integration and deployment workflow).
Например, ваши разработчики пишут код локально и делятся своим стеком разработки (набором docker образов) с коллегами. Когда они готовы, отравляют код и контейнеры на тестовую площадку и запускают любые необходимые тесты. С тестовой площадки они могут оправить код и образы на продакшен.
Более простое выкладывание и разворачивание
Основанная на контейнерах docker платформа позволят легко портировать вашу полезную нагрузку. Docker контейнеры могут работать на вашей локальной машине, как реальной так и на виртуальной машине в дата центре, так и в облаке.
Портируемость и легковесная природа docker позволяет легко динамически управлять вашей нагрузкой. Вы можете использовать docker, чтобы развернуть или погасить ваше приложение или сервисы. Скорость docker позволяет делать это почти в режиме реального времени.
Высокие нагрузки и больше полезных нагрузок
Docker легковесен и быстр. Он предоставляет устойчивую, рентабельную альтернативу виртуальным машинам на основе гипервизора. Он особенно полезен в условиях высоких нагрузок, например, при создания собственного облака или платформа-как-сервис (platform-as-service). Но он так же полезен для маленьких и средних приложений, когда вам хочется получать больше из имеющихся ресурсов.
Главные компоненты Docker
Архитектура Docker
Docker использует архитектуру клиент-сервер. Docker клиент общается с демоном Docker, который берет на себя тяжесть создания, запуска, распределения ваших контейнеров. Оба, клиент и сервер могут работать на одной системе, вы можете подключить клиент к удаленному демону docker. Клиент и сервер общаются через сокет или через RESTful API.
Docker-демон
Как показано на диаграмме, демон за пускается на хост-машине. Пользователь не взаимодействует с сервером на прямую, а использует для этого клиент.
Docker-клиент
Docker-клиент, программа docker — главный интерфейс к Docker. Она получает команды от пользователя и взаимодействует с docker-демоном.
Внутри docker-а
Образы
Docker-образ — это read-only шаблон. Например, образ может содержать операционку Ubuntu c Apache и приложением на ней. Образы используются для создания контейнеров. Docker позволяет легко создавать новые образы, обновлять существующие, или вы можете скачать образы созданные другими людьми. Образы — это компонента сборки docker-а.
Реестр
Docker-реестр хранит образы. Есть публичные и приватные реестры, из которых можно скачать либо загрузить образы. Публичный Docker-реестр — это Docker Hub. Там хранится огромная коллекция образов. Как вы знаете, образы могут быть созданы вами или вы можете использовать образы созданные другими. Реестры — это компонента распространения.
Контейнеры
Контейнеры похожи на директории. В контейнерах содержится все, что нужно для работы приложения. Каждый контейнер создается из образа. Контейнеры могут быть созданы, запущены, остановлены, перенесены или удалены. Каждый контейнер изолирован и является безопасной платформой для приложения. Контейнеры — это компонента работы.
Так как же работает Docker?
Как работает образ?
Мы уже знаем, что образ — это read-only шаблон, из которого создается контейнер. Каждый образ состоит из набора уровней. Docker использует union file system для сочетания этих уровней в один образ. Union file system позволяет файлам и директориями из разных файловых систем (разным ветвям) прозрачно накладываться, создавая когерентную файловую систему.
Одна из причин, по которой docker легковесен — это использование таких уровней. Когда вы изменяете образ, например, обновляете приложение, создается новый уровень. Так, без замены всего образа или его пересборки, как вам возможно придётся сделать с виртуальной машиной, только уровень добавляется или обновляется. И вам не нужно раздавать весь новый образ, раздается только обновление, что позволяет распространять образы проще и быстрее.
В основе каждого образа находится базовый образ. Например, ubuntu, базовый образ Ubuntu, или fedora, базовый образ дистрибутива Fedora. Так же вы можете использовать образы как базу для создания новых образов. Например, если у вас есть образ apache, вы можете использовать его как базовый образ для ваших веб-приложений.
Примечание! Docker обычно берет образы из реестра Docker Hub.
Docker образы могут создаться из этих базовых образов, шаги описания для создания этих образов мы называем инструкциями. Каждая инструкция создает новый образ или уровень. Инструкциями будут следующие действия:
Как работает docker реестр?
Реестр — это хранилище docker образов. После создания образа вы можете опубликовать его на публичном реестре Docker Hub или на вашем личном реестре.
С помощью docker клиента вы можете искать уже опубликованные образы и скачивать их на вашу машину с docker для создания контейнеров.
Docker Hub предоставляет публичные и приватные хранилища образов. Поиск и скачивание образов из публичных хранилищ доступно для всех. Содержимое приватных хранилищ не попадает в результат поиска. И только вы и ваши пользователи могут получать эти образы и создавать из них контейнеры.
Как работает контейнер?
Контейнер состоит из операционной системы, пользовательских файлов и метаданных. Как мы знаем, каждый контейнер создается из образа. Этот образ говорит docker-у, что находится в контейнере, какой процесс запустить, когда запускается контейнер и другие конфигурационные данные. Docker образ доступен только для чтения. Когда docker запускает контейнер, он создает уровень для чтения/записи сверху образа (используя union file system, как было указано раньше), в котором может быть запущено приложение.
Что происходит, когда запускается контейнер?
Что же происходит под капотом, когда мы запускаем эту команду?
Используемые технологии
Докер написан на Go и использует некоторые возможности ядра Linux, чтобы реализовать приведенный выше функционал.
Пространство имен(namespaces)
Docker использует технологию namespaces для организации изолированных рабочих пространств, которые мы называем контейнерами. Когда мы запускаем контейнер, docker создает набор пространств имен для данного контейнера.
Это создает изолированный уровень, каждый аспект контейнера запущен в своем простанстве имен, и не имеет доступ к внешней системе.
Control groups (контрольные группы)
Docker также использует технологию cgroups или контрольные группы. Ключ к работе приложения в изоляции, предоставление приложению только тех ресурсов, которые вы хотите предоставить. Это гарантирует, что контейнеры будут хорошими соседями. Контрольные группы позволяют разделять доступные ресурсы железа и если необходимо, устанавливать пределы и ограничения. Например, ограничить возможное количество памяти контейнеру.
Union File System
Union File Sysem или UnionFS — это файловая система, которая работает создавая уровни, делая ее очень легковесной и быстрой. Docker использует UnionFS для создания блоков, из которых строится контейнер. Docker может использовать несколько вариантов UnionFS включая: AUFS, btrfs, vfs и DeviceMapper.
Введение в Docker Hub и все, что вы должны знать о нем
В этом руководстве мы узнаем о Docker Hub, в том числе о том, как его использовать, как создать собственный образ и как он помогает при публикации и переносе изображений в Docker Hub и из него. И мы также потратим некоторое время на изучение некоторых популярных репозиториев на Docker Hub.
Предпосылки
Вам требуется базовое понимание Docker, знакомое с окружением Windows и Linux. В этом руководстве будет использоваться инструмент Docker Desktop для выполнения текущих упражнений, т.е. Для создания и передачи образа в Docker Hub. Пользователи Windows и Mac могут скачать и установить его отсюда, а пользователи Linux перейдут по этой ссылке.
Что такое Docker Hub?
Docker Hub представляет собой открытый репозиторий образов (хранилище) контейнеров, которая поддерживается Docker Inc.
Он позволяет нам извлекать и добавлять Dcoker образы в Docker Hub. Его также можно сравнить с GitHub, где мы получаем и отправляем наш исходный код, но в случае Docker Hub мы загружаем или публикуем наши образы контейнеров.
Это облачный онлайн-репозиторий, в котором хранятся два типа репозиториев: общедоступный и частный репозиторий. Общедоступные репозитории доступны каждому, но частный доступен заинтересованному владельцу репозиториев; Кроме того, с этим связана стоимость, если мы храним более определенного количества репозиториев как частные.
Особенности Docker Hub
Docker Hub предлагает следующие функции.
1. Репозитории образов
Это помогает нам находить и извлекать образы контейнеров из Docker Hub.
Он также помогает нам передавать образы в качестве публичного или частного хранилища в Docker Hub.
2. Команда и организации
Позволяет нам создавать рабочие группы и выдавать репозитории как частные, которые доступны для использования только в нашей организации. Таким образом, мы управляли доступом к нашим частным репозиториям образов контейнеров.
3. Интеграция c GitHub и Bitbucket
Позволяет интеграцию с репозиториями исходного кода, такими как GitHub и BitBucket.
4. Автоматизированные сборки
Если какие-либо изменения в исходном коде были перенесены в репозитории исходного кода, он автоматически обнаруживает и создает образы контейнеров из GitHub или BitBucket и отправляет их в Docker Hub.
5. Webhooks
Как только мы успешно выдвинули наши изображения с помощью вебхуков (Webhooks), он запускает действие по интеграции Docker Hub с другими сервисами.
6. Официальные и издательские образы
Высококачественные образы, предоставляемые докерами, считаются официальными образами, и их можно извлекать и использовать.
Аналогичным образом, высококачественные образы, предоставляемые сторонними поставщиками, являются образами издателя, также называемыми сертифицированными образами, что дает поддержку и гарантию совместимости с Docker enterprise. Мы обсудим больше сертифицированных изображений позже в этой статье.
Создание первого Docker репозитория
Этот шаг требует входа в Docker Hub с использованием ваших учетных данных. Если у вас нет учетной записи, вы можете создать ее, нажав кнопку «Регистрация» на веб-странице. После того, как вы вошли в систему, вы можете создать репозиторий, нажав « Создать репозиторий» на странице приветствия.
Мы также можем интегрировать наши репозитории исходного кода, такие как GitHub и BitBucket, с помощью настроек сборки, но это не обязательно и может быть сделано на более позднем этапе.
Поздравляем! Вы создали свой первый репозиторий, который будут выглядеть следующим образом.
Docker Hub предоставляет нам только один частный репозиторий бесплатно. Хотя, если нам нужно больше частных репозиториев, мы можем обновить нашу учетную запись до платного плана.
Теперь откройте Docker Desktop tool/terminal Docker, над downloaded and installed, и войдите в Docker Hub с помощью команды.
Поиск Docker образа
Есть два способа поиска в общедоступных репозиториях и изображениях из Docker Hub, то есть мы можем либо искать их на веб-сайте Docker Hub, либо мы можем использовать инструмент командной строки и выполнить команду ниже. Предположим, мы хотим найти образ хранилища MySQL.
Загрузка Docker образа
Мы можем загрузить образ из команды Docker Hub, используя команду pull следующим образом:
Если у нас уже есть образ mysql на нашей машине, то приведенная выше команда автоматически обновит образ до последней версии. Здесь нужно помнить одну вещь: если мы выполним вывод нашей команды поиска docker, на Docker Hub будет много образов MySQL. Но выбор зависит от нас, какой из них использовать в зависимости от нашего варианта использования, и нам нужно найти подходящий вариант.
Создание Docker образа
Этот процесс требует Dockerfile. Мы можем рассматривать Dockerfile как руководство по эксплуатации, которое говорит Docker, что собирать (подобие requirements.txt в python). Короче говоря, это файл конфигурации, в котором хранится инструкция по сборке.
Как это работает?
Docker читает инструкцию из Dockerfile и автоматически создает образы. Образ Docker является многоуровневой файловой системой и состоит из нескольких слоев, доступных только для чтения, и каждый слой образа Docker представляет инструкции файла Docker. Давайте выполните следующие шаги, чтобы создать образ с помощью Dockerfile.
Создайте Dockerfile, который определяет конфигурацию нашего приложения.
Примечание. Имя файла должно быть Dockerfile с большой латинской буквы D.
Давайте посмотрим на некоторые важные ключевые слова, используемые в Dockerfile
Запустите команду ниже, чтобы создать наш образ Docker
Синтаксис
В приведенной выше команде имя изображения и символ точка « . » указывает текущий рабочий каталог. Это означает, что Docker ищет текущий каталог файла Docker. Опция « -t » используется для обозначения образа.
Вывод будет похожий на:
Теперь давайте проверим наш образ, запустив его с помощью команды запуска docker.
Выполнение вышеупомянутой команды попросит ваш Docker образ успешно установить MySQL на ваш компьютер со всеми необходимыми обновлениями, и, наконец, он также отобразит сообщение.
Заливаем образ на Docker Hub
Мы можем проверить теги образа и статус на Docker Hub, который будет выглядеть примерно так.
Это официальные образы поставщиков или участников. Образы может быть сертифицирован Docker Hub, только если его содержимое соответствует правилам, стандартам и законам, предусмотренным Docker Hub. Короче говоря, этот образ должен пройти определенные базовые тесты.
Популярные образы на DockerHub
На Docker Hub доступно множество популярных и оптимизированных изображений.
Популярность этих образов зависит от различных факторов, таких как спрос, присутствие на рынке, рейтинги, оценки удовлетворенности и т.д. Для получения подробного списка самых популярных репозиториев перейдем на веб-сайт Docker Hub.
Использование образа также зависит от ОС и ее архитектуры. Если мы знаем, что для какой ОС и ее архитектуры будут использоваться извлеченные образы, то мы должны рассмотреть следующие ключевые факторы, прежде чем извлекать образ.
Это HTTP push API, запускаемый пользовательскими событиями. Мы можем использовать webhook в Docker, чтобы уведомить приложение или службу, которая использует соответствующие образы. Как правило, мы настраиваем веб-хук с докером как конвейер событий, так что любая загрузка новых образов вызовет тестирование приложений для запуска подчеркнутых тестовых случаев.
Как только результат теста будет успешным, он вызовет другое событие, которое будет развертыванием контейнера, а после успешного завершения развертывания запустит другие события, чтобы зарегистрировать сделанные изменения.
Заключение
Я верю, что теперь у вас есть четкое понимание Docker Hub и того, как вы можете искать, создавать и заливать (пушить) образы. Имейте в виду, что если вы выбериnе общедоступные (public) образs, они будут видны всем.
Docker: практическое руководство для начинающих
Перевод первой части статьи «Docker simplified: a hands-on guide for absolute beginners».
Возможно, вы только рассматриваете возможность карьеры в DevOps, а может, уже активно ее строите, но в любом случае: если в вашем резюме не обозначен Docker, определенно пришла пора его изучить. Как оказалось, это один из самых нужных навыков для любого DevOps-профессионала.
В этом посте я постараюсь как можно более простым языком рассказать, что такое Docker.
Итак, что такое Docker?
Выражаясь простыми словами, Docker это платформа, облегчающая процесс сборки, запуска, управления и дистрибуции приложений. Все это он делает путем виртуализации операционной системы компьютера, на котором он установлен и запущен.
Написан Docker на языке программирования Go, первая его версия была выпущена в 2013 году.
В связи с богатством функционала, предлагаемого Docker, он широко применяется в ведущих мировых организациях и университетах (среди них – Visa, PayPal, Корнеллский университет и университет Индианы) для запуска и управления их приложениями.
А теперь давайте разберемся, какая проблема стоит перед разработчиками и какое ее решение предлагает Docker
Проблема
Скажем, у вас есть три различных приложения на Python, которые вы планируете размещать на серверах (это могут быть физические или виртуальные машины).
Каждое из этих приложений использует свою версию Python, а также отдельный, специфический набор библиотек и зависимостей.
Поскольку мы не можем установить на одной машине разные версии Python, мы не можем и разместить на ней и все три приложения сразу.
Решение
Давайте посмотрим, как эта проблема решается без применения Docker. При таком сценарии мы можем взять три разных физических машины или одну, но достаточно мощную для размещения трех виртуальных машин.
Оба варианта позволят нам установить различные версии Python и пакеты зависимостей на каждой из этих машин.
И при любом из этих вариантов расходы, связанные с приобретением и поддержкой «железа», будут довольно высокими.
А теперь давайте рассмотрим вариант решения с помощью Docker и разберемся, почему оно более экономичное.
Чтобы это понять, нужно вникнуть в то, как именно функционирует Docker.
Как это работает
Машину, на которой установлен и запущен Docker, обычно называют Docker Host или просто «хост».
Чтобы развернуть приложение на хосте, на нем сначала создается логическая сущность для размещения этого приложения. В терминологии Docker эта логическая сущность называется контейнером (Container) или, если быть более точным, контейнером Docker (Docker Container).
В контейнере Docker нет никакой установленной и запущенной операционной системы. Но в нем будет виртуальная копия таблицы процессов, сетевых интерфейсов и точек монтирования файловой системы. Все это будет унаследовано от операционной системы хоста, на котором размещен и запущен контейнер.
Таким образом, ядро операционной системы хоста разделяется между всеми контейнерами, запущенными на нем.
Это позволяет каждому контейнеру быть изолированным от других, размещенных на том же хосте. Т.е., контейнеры с различными требованиями приложений и зависимостями могут запускаться на одном хосте, главное, чтобы у них были одинаковые требования к операционной системе.
Короче говоря, вместо виртуализации компонентов «железа», Docker виртуализирует операционную систему хоста, на котором он установлен и запущен.
Преимущества и недостатки использования Docker
Основные преимущества применения Docker
Недостатки использования Docker
Основные компоненты Docker
Движок Docker (Docker Engine) это один из его ключевых компонентов. Он отвечает за функционирование платформы Docker в целом. По своей сути это клиент-серверное приложение, состоящее из трех основных компонентов:
Сервер запускает демон под названием dockerd (Docker Daemon), являющийся просто процессом. Он отвечает за создание и управление образами Docker, контейнерами, сетями томами платформы Docker.
REST API определяет, каким образом приложения могут взаимодействовать с сервером и указывает им, как они должны работать.
Клиент это ни что иное как интерфейс командной строки, позволяющий пользователям взаимодействовать с Docker при помощи команд.
Терминология Docker
Давайте пробежимся по терминам, связанным с Docker.
Образы Docker (Docker Images) и контейнеры Docker (Docker Containers) это две важных вещи, с которыми вы будете постоянно сталкиваться, работая с Docker.
Говоря простыми словами, образ Docker это шаблон, содержащий приложение и все зависимости, необходимые для запуска этого приложения в Docker.
А контейнер Docker это логическая сущность. Более конкретно – это запущенный экземпляр образа Docker.
Что такое Docker Hub?
Docker Hub это официальный онлайн-репозиторий, где вы можете найти все доступные для использования образы Docker.
Docker Hub также позволяет нам хранить и при желании распространять наши собственные образы. Мы можем делать их публичными или приватными в зависимости от наших нужд.
Пожалуйста, учтите, что при бесплатном использовании Docker Hub можно хранить приватно только один образ Docker. Если вам нужно больше, придется оформить платную подписку.
Редакции Docker
Docker доступен в двух редакциях:
Community Edition подходит для отдельных разработчиков и маленьких команд. Эта редакция предоставляет ограниченный функционал по сравнению с Enterprise Edition.
Enterprise Edition, в свою очередь, подходит для больших команд и для использования Docker в продакшен-среде.
Enterprise Edition делится еще на три разных редакции:
Установка Docker
Прежде чем приступить к работе с Docker, давайте рассмотрим, как его устанавливать.
Ниже даны ссылки на официальные руководства Docker по установке Community Edition. Они довольно простые, можете воспользоваться ими для установки Docker на вашу машину.
Если вам лень устанавливать Docker или же у вас просто недостаточно свободных ресурсов на вашей машине для его установки, а поиграться хочется, – есть решение. Есть специальная онлайн-«песочница» – Play with Docker. Там пользователи могут попрактиковаться вводить команды, не устанавливая ничего на свою машину. Площадка проста в использовании и совершенно бесплатна.
В следующей статье мы рассмотрим основные команды Docker, которые помогут вам начать работать с ним.