fbpx

Каталог статей

Каталог статей для размещения статей информационного характера

Как выучить

Самоучитель по Docker для начинающих

Самоучитель по Docker для начинающих

В этом учебнике по Docker вы узнаете о виртуализации и контейнеризации, получите сравнение этих двух технологий, а также понимание основных концепций Docker, таких как его архитектура, рабочий процесс Docker, запуск и остановка контейнеров, важные команды в Docker, Dockerfile, Docker machine и многое другое.

Самоучитель DevOps для начинающих

  • Самоучитель DevOps для начинающих
  • Самоучитель Ansible для начинающих
  • DevOps и Agile
  • Инструменты DevOps
  • Введение в DevOps
  • Учебник по Jenkins – Что такое Jenkins?
  • Самоучитель Puppet для начинающих: изучите от базового до продвинутого уровня
  • Самоучитель по Docker для начинающих
  • Самоучитель Git для начинающих
  • Топ 18 команд Git с примерами и синтаксисом
  • Шпаргалка по Docker
  • Шпаргалка по Chef
  • Шпаргалка по GIT
  • Ansible Базовая шпаргалка
  • Шпаргалка по Jenkins
  • Шпаргалка по Kubernetes
  • Шпаргалка по Puppet

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

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

Вот список тем, включенных в этот лучший самоучитель по Docker:

Давайте изучать Docker с нуля!

Посмотрите это обучающее видео по DevOps на YouTube:

Что такое Docker?

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

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

Почему? Мы обсудим это по мере продвижения в этом учебнике по Docker.

Для начала давайте разберемся, что такое виртуализация?

Подготовьтесь к поступлению в ведущие MNC, изучив эти вопросы и ответы на интервью по DevOps!

Что такое виртуализация?

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

Давайте посмотрим, как работают виртуальные машины с архитектурой, а также разберем проблемы, с которыми они сталкиваются.

  • Шпаргалка по Docker от Intellipaat очень удобна. Загляните в этот блог.
  • Что такое хост виртуализации?
  • Из приведенной выше архитектуры виртуальных машин легко понять, что три гостевые операционные системы, выступающие в роли виртуальных машин, работают на операционной системе хоста. При виртуализации процесс ручной перенастройки оборудования и микропрограммного обеспечения, а также установки новой ОС может быть полностью автоматизирован; все эти шаги сохраняются как данные в любых файлах диска.
  • Виртуализация позволяет нам запускать наши приложения на меньшем количестве физических серверов. При виртуализации каждое приложение и ОС живут в отдельном программном контейнере, называемом ВМ. Если ВМ полностью изолированы, то все вычислительные ресурсы, такие как процессоры, хранилища и сети, объединяются вместе, и они динамически предоставляются каждой ВМ с помощью программного обеспечения, называемого гипервизором.
  • Однако запуск нескольких ВМ на одном хосте приводит к снижению производительности. Поскольку гостевые ОС имеют собственное ядро, библиотеки и множество зависимостей, работающих на одной ОС хоста, они занимают много ресурсов, таких как процессор, жесткий диск и, особенно, оперативная память.

Кроме того, когда мы используем виртуальные машины для виртуализации, процесс загрузки занимает много времени, что влияет на эффективность работы приложений в реальном времени. Для того чтобы преодолеть эти ограничения, была введена контейнеризация.

Как контейнеризация преодолела эти проблемы? Давайте обсудим это подробнее в этом базовом учебнике по Docker.

Станьте мастером DevOps, записавшись на этот онлайн-тренинг DevOps в Лондоне!

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

Что такое контейнеризация?

Контейнеризация – это техника, при которой виртуализация переносится на уровень ОС. При контейнеризации мы виртуализируем ресурсы ОС. Это более эффективно, поскольку гостевая ОС не потребляет ресурсы хоста. Вместо этого контейнеры используют только ОС хоста и используют соответствующие библиотеки и ресурсы только по мере необходимости. Необходимые двоичные файлы и библиотеки контейнеров запускаются на ядре хоста, что приводит к ускорению обработки и выполнения.

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

Теперь давайте рассмотрим ее преимущества:

Контейнеры маленькие и легкие, поскольку они используют одно и то же ядро ОС.

Их загрузка не занимает много времени, всего несколько секунд.

Они демонстрируют высокую производительность при низком использовании ресурсов.

Теперь давайте разберемся в разнице между контейнеризацией и виртуализацией в этом учебнике по контейнерам Docker.

Пройдите лучший курс DevOps в Нью-Йорке, чтобы лучше понять DevOps!

Контейнеризация против виртуализации

  • Поскольку мы уже познакомились с контейнеризацией и виртуализацией, мы знаем, что и то, и другое позволяет нам запускать несколько ОС на одной машине.
  • В чем же разница между контейнеризацией и виртуализацией? Давайте ознакомимся с приведенной ниже таблицей, чтобы понять эти различия.
  • Виртуализация

Контейнеризация

Виртуализирует аппаратные ресурсы

Виртуализация только ресурсов ОС

Требуется полная установка ОС для каждой виртуальной машины

Устанавливает контейнер только на ОС хоста

Для каждой виртуализированной ОС устанавливается ядро Используется только ядро базовой ОС хоста
Тяжеловесный Легкий вес
Ограниченная производительность Родная производительность
Полностью изолированные Изоляция на уровне процессов
В случае контейнеризации все контейнеры используют одну и ту же ОС. Для каждого типа приложений создается несколько контейнеров, что делает их быстрее, но без лишней траты ресурсов, в отличие от виртуализации, где для каждой ОС требуется свое ядро и используется много ресурсов основной ОС. Мы можем легко понять разницу на примере архитектуры контейнеров, приведенной ниже:
Для того чтобы создавать и запускать контейнеры на нашей ОС, нам необходимо программное обеспечение, которое позволяет нам это делать. Именно здесь на помощь приходит Docker! В этом учебнике мы разберем архитектуру Docker.
Архитектура Docker Docker использует архитектуру клиент-сервер. Клиент Docker состоит из Docker build, Docker pull и Docker run. Клиент обращается к демону Docker, который в дальнейшем помогает собирать, запускать и распространять контейнеры Docker. Клиент Docker и демон Docker могут работать на одной системе; в противном случае мы можем подключить клиент Docker к удаленному демону Docker. Оба взаимодействуют друг с другом с помощью REST API, через сокеты UNIX или по сети.

Узнайте из приведенной ниже диаграммы архитектуры Docker.

Клиент Docker

Docker Host

Реестр Docker

Клиент Docker

Для многих пользователей Docker это основной способ взаимодействия с Docker.

Он использует утилиту командной строки или другие инструменты, использующие Docker API, для связи с демоном Docker.

  • Клиент Docker может взаимодействовать с несколькими демонами Docker.
  • Хост Docker
  • На хосте Docker есть демон Docker и объекты Docker, такие как контейнеры и образы. Сначала разберемся с объектами на хосте Docker, а затем перейдем к рассмотрению работы демона Docker.

Объекты Docker:

  • Что такое образ Docker? Образ Docker – это тип рецепта или шаблона, который может быть использован для создания контейнеров Docker. Он включает в себя шаги по созданию необходимого программного обеспечения.
  • Что такое контейнер Docker? Тип виртуальной машины, которая создается на основе инструкций, содержащихся в образе Docker. Это запущенный экземпляр образа Docker, который состоит из всего пакета, необходимого для запуска приложения.
  • Демон Docker помогает в прослушивании запросов к API Docker и в управлении объектами Docker, такими как образы, контейнеры, тома и т. д. Демон создает образ на основе данных пользователя, а затем сохраняет его в реестре.

Если мы не хотим создавать образ, то мы можем просто взять образ из хаба Docker, который может быть создан другим пользователем. Если мы хотим создать работающий экземпляр нашего образа Docker, то нам нужно выполнить команду run, которая создаст контейнер Docker.

Демон Docker может взаимодействовать с другими демонами для управления службами Docker

  • Реестр Docker
    • Реестр Docker – это хранилище образов Docker, которые используются для создания контейнеров Docker.
    • Мы можем использовать локальный или частный реестр или Docker hub, который является наиболее популярным социальным примером репозитория Docker.
    • Теперь, когда мы ознакомились с архитектурой Docker и поняли, как работает Docker, давайте приступим к установке и работе с Docker и выполнению важных команд Docker.
    • Если у вас есть сомнения или вопросы, связанные с DevOps, получите их разъяснения от экспертов DevOps в нашем сообществе DevOps!
    • Установка Docker

    Для установки Docker на Windows и macOS процесс довольно прост. Все, что нам нужно сделать, это загрузить и установить Docker с сайта Download Docker , который включает в себя клиент Docker, машину Docker, Compose (только для Mac), Kitematic и VirtualBox.

    • С другой стороны, в случае с Linux есть несколько шагов, которые нам необходимо выполнить. Давайте проверим их.
    • Чтобы установить Docker на компьютере Ubuntu, сначала нужно обновить его пакеты. Для этого введите в терминале следующую команду:

    Так как мы используем эту команду под sudo, после нажатия Enter она запросит пароль. Введите пароль, а затем следуйте шагам, описанным далее в этом руководстве по Docker.

    Теперь мы должны установить рекомендуемые пакеты. Для этого просто введите нижеупомянутую команду:

    Итак, мы успешно установили необходимые условия для работы Docker. Нажмите “y”, чтобы продолжить.

    Давайте продвинемся дальше в этом учебнике по Docker и установим движок Docker.

    Процесс установки Docker завершен. Используйте приведенную ниже команду, чтобы проверить, правильно ли установлен Docker.

    Для начала вы получите результат: Работа уже запущена: docker

    Это означает, что Docker был успешно запущен.

    Запуск контейнера

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

    Мы можем запустить простой контейнер “hello-world”, чтобы проверить, все ли работает правильно. Для этого выполните приведенную ниже команду:

    Output :

    Это сообщение показывает, что установка работает правильно.

    Теперь давайте продвинемся дальше в этом учебнике по Docker, чтобы понять рабочий процесс Docker.

    Типичный локальный рабочий процесс

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

    Давайте поймем этот типичный локальный рабочий процесс из приведенной ниже диаграммы:

    Dockerfile, здесь, состоит из конфигурации и имени образа, взятого из реестра Docker, такого как Docker hub. Этот файл в основном помогает в сборке образа, который включает в себя инструкции по конфигурации контейнера, или это может быть образ, полученный из реестра Docker.

    Давайте разберем этот процесс немного подробнее:

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

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

    В нашем контейнере мы можем выполнять любые операции, такие как:

    Остановка контейнера

    запуск контейнера

    перезапуск контейнера

    • Хотите стать экспертом DevOps? Пройдите онлайн-курс DevOps в Торонто!
    • Извлечение образа из реестра Docker
    • Самый простой способ получить образ для создания контейнера – это найти уже готовый образ на официальном сайте Docker.
      • Мы можем выбрать из различных распространенных программ, таких как MySQL, Node.js, Java, Nginx или WordPress, на хабе Docker, а также из сотен образов с открытым исходным кодом, созданных обычными людьми по всему миру.
      • Например, если мы хотим загрузить образ для MySQL, то мы можем использовать команду pull:
      • Если нам нужна точная версия образа, то мы можем использовать:

      Output :

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

      Теперь, чтобы добавить идентификатор репозитория, мы можем использовать следующую команду:

      Посл е-t мы можем добавить любое имя по нашему выбору для идентификации нашего хранилища.

      Выход

      Теперь, в этом учебнике по Docker, мы будем настраивать образ вручную, устанавливая программное обеспечение или изменяя конфигурацию. После завершения мы можем выполнить команду Docker commit для создания образа работающего контейнера.

      Dockerfile, здесь, состоит из конфигурации и имени образа, взятого из реестра Docker, такого как Docker hub. Этот файл в основном помогает в сборке образа, который включает в себя инструкции по конфигурации контейнера, или это может быть образ, полученный из реестра Docker.

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

      Обычно образ Docker требует некоторых дополнительных переменных окружения, которые можно указать с помощью опци и-e. Для долгоиграющих процессов, таких как демоны, также необходимо использовать опци ю-d.

      Чтобы запустить образ “test-intellipaat”, нужно выполнить показанную ниже команду, которая настраивает пароль корневого пользователя MySQL, как описано в документации репозитория MySQL хаба Docker:

      Dockerfile, здесь, состоит из конфигурации и имени образа, взятого из реестра Docker, такого как Docker hub. Этот файл в основном помогает в сборке образа, который включает в себя инструкции по конфигурации контейнера, или это может быть образ, полученный из реестра Docker.

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

      Из приведенного выше результата мы можем понять, что имя контейнера – shubham_rana, которое генерируется автоматически.

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

      Мы можем легко дать имя нашему контейнеру с помощью этой команды.

      Хотите получить признанную в отрасли сертификацию по DevOps? Запишитесь на курс DevOps от Intellipaat в Бангалоре прямо сейчас!

      Остановка и запуск контейнеров

      Как только мы запустили наш контейнер Docker, мы можем использовать его, набрав команду docker stop с именем контейнера, как показано ниже:

      Если мы хотим снова запустить наш контейнер из состояния, в котором мы его выключили, мы можем использовать команду start, поскольку весь наш контейнер записан на диск:

      Теперь давайте посмотрим, как можно пометить изображение.

      Пометка изображения

      После того как наш образ запущен, мы можем пометить его именем пользователя, именем образа и номером версии, прежде чем отправить его в хранилище с помощью команды docker tag:

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

      Закачка образа в хранилище

      Теперь мы готовы отправить наш образ в хаб Docker, чтобы любой желающий мог использовать его через частный репозиторий.

      Сначала перейдите на сайт https://hub.docker.com/ и создайте бесплатную учетную запись.

      Затем войдите в учетную запись с помощью команды login:

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

      Наконец, отправьте наш образ, указав имя пользователя, образ и название версии, с помощью команды push.

      В течение нескольких минут мы получим сообщение о том, что наш репозиторий был успешно вытолкнут.

      Когда мы вернемся в наш аккаунт Docker hub, мы увидим, что там появился новый репозиторий, как показано ниже:

      • Инженеры DevOps являются одними из самых высокооплачиваемых специалистов в технологической сфере. Так зачем ждать? Присоединяйтесь к обучению DevOps в Хайдарабаде тода
      • После использования контейнера мы обычно хотим удалить его, чтобы он не лежал и не занимал место на диске.
      • Мы можем использовать команду rm для удаления контейнера, как показано ниже:
      • Удаление изображений

      Мы уже знаем, как перечислить все локально кэшированные изображения с помощью команды images. Эти кэшированные изображения могут занимать значительный объем пространства, поэтому, чтобы освободить место, удалив ненужные изображения, мы можем использовать команду rmi, как показано ниже:

      Теперь мы знаем, как удалять кэшированные образы, но что делать с ненужными и безымянными образами, которые могут возникнуть в процессе отладки при создании нового образа? Эти образы обозначаются именем . Мы можем удалить их все с помощью следующей команды:

      Перечисление портов

      Заранее зная, какие порты открыты контейнером, можно значительно упростить и ускорить работу, например, порт 3306 предназначен для доступа к базе данных MySQL, а порт 80 – для доступа к веб-серверу. Используя команду port, как показано ниже, мы можем отобразить все открытые порты:

      Listing Processes

      Для отображения процессов в контейнере мы можем использовать команду top в Docker, которая очень похожа на команду top в Linux.

      Выполнение команд

      Для выполнения команд в запущенном контейнере можно использовать команду exec.

      Например, если мы хотим перечислить содержимое корня жесткого диска, мы можем использовать команду exec, как показано ниже:

      Мы можем получить доступ к оболочке bash, если хотим войти в контейнер по ssh как root. Для этого мы можем использовать следующую команду:

      Примечание: Все коммуникации между клиентами Docker и демонами Docker безопасны, поскольку они уже зашифрованы.

      Свяжитесь с Intellipaat для получения комплексного обучения DevOps и станьте сертифицированным DevOps инженером!

      Команда запуска Docker

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

      Читайте больше о Docker и начните работу с Docker для Windows прямо сейчас!

      Dockerfile

      Dockerfile содержит все инструкции, например, команды Linux для установки и настройки программного обеспечения. Создание Dockerfile, как мы уже знаем, является основным способом генерации образа Docker. Когда мы используем команду build для создания образа, она может ссылаться на Dockerfile, доступный по нашему пути, или на URL, например, репозиторий GitHub.

      Инструкции:

      Инструкции в Dockerfile выполняются в том же порядке, в котором они находятся в Dockerfile.

      В Dockerfile также могут присутствовать комментарии, начинающиеся с символа #.

      В следующей таблице приведен список доступных инструкций:

      Инструкция

      Описание

      FROM

      Первая инструкция в Dockerfile, она определяет образ, от которого нужно наследоваться

      MAINTAINER

      Эта инструкция обеспечивает видимость, а также признание заслуг автора образа

      RUN

      Эта инструкция выполняет команду Linux для установки и конфигурирования

      ENTRYPOINT

      Последний скрипт или приложение, которое используется для загрузки контейнера и превращения его в исполняемое приложение

      CMD

      Эта команда использует массив JSON для предоставления аргументов по умолчанию для ENTRYPOINT LABEL
      Эта инструкция содержит метаданные имени/значения об образе ENV
      Эта команда устанавливает переменные окружения COPY
      Эта команда копирует файлы в контейнер ADD
      Эта инструкция, по сути, является альтернативой инструкции COPY WORKDIR
      Устанавливает рабочий каталог для инструкций RUN, CMD, ENTRYPOINT, COPY и/или ADD. EXPOSE
      Порты, которые прослушивает контейнер VOLUME
      Эта команда создает точку монтирования USER
      Инструкция для выполнения инструкций RUN, CMD и/или ENTRYPOINT Docker Machine
      Docker machine – это утилита командной строки, которая используется для управления одной или несколькими локальными машинами, которые обычно запускаются в отдельных экземплярах VirtualBox, или удаленными машинами, размещенными у облачных провайдеров, например, Amazon Web Services, Microsoft Azure и т.д. Как создать локальную машину?
      Docker Toolbox поставляется с Docker-машиной по умолчанию под названием default. Это просто для ознакомления и начала работы, но позже нам может понадобиться несколько машин для сегментации различных запущенных контейнеров. Для этого мы можем использовать следующую команду: Эта команда создаст локальную машину с помощью образа VirtualBox под названием intellipaat.
      Вывод списка машин Если мы хотим получить список машин, которые мы настроили, мы можем выполнить следующую команду:
      Запуск и остановка машин Мы можем запустить созданную нами машину Docker с помощью следующей команды:
      Теперь, когда машина Docker запущена, нам нужно настроить командную строку Docker, с которой должен взаимодействовать демон Docker. Для этого мы можем использовать следующие команды: Теперь, чтобы остановить машину, используйте следующую команду:

      Примечание: Эти команды запуска и остановки запустят и остановят наши виртуальные машины VirtualBox, и мы можем наблюдать за изменением состояния виртуальных машин во время выполнения команд, если у нас открыт менеджер VirtualBox.

      Заключение

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

      Хотя мы рассмотрели довольно много основных функций Docker, нам еще многое предстоит узнать. Если вы хотите изучить Docker, то вам необходимо пройти структурированное обучение DevOps от Intellipaat, где вы будете работать над различными сценариями, основанными на конкретных случаях, наряду с исчерпывающими заданиями по темам, практическими занятиями и различными отраслевыми проектами, которые подготовят вас к работе DevOps в любой известной MNC.

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

      Что такое хост виртуализации

      Контейнер

      Архитектура Docker

      Отправка образа в хранилище

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

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