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

Основные концепции Docker: контейнеры, образы, реестры

Контейнеры

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

Преимущества контейнеров:

  • Изоляция: Каждое приложение работает в своём собственном контейнере, не влияя на другие.
  • Портативность: Контейнеры можно запускать на любой платформе, поддерживающей Docker.
  • Быстрое развертывание: Контейнеры запускаются намного быстрее, чем виртуальные машины.
  • Масштабируемость: Легко создавать и управлять множеством контейнеров.

Образы

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

Ключевые аспекты образов:

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

Реестры

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

Использование реестров:

  • Публичные реестры: Доступ к готовым образам от сообщества и официальных поставщиков (например, nginx, redis, postgres).
  • Частные реестры: Безопасное хранение и управление образами внутри организации.
  • Автоматизация: Интеграция с CI/CD пайплайнами для автоматической сборки и публикации образов.

Установка Docker на различных операционных системах

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

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

Docker Desktop — это приложение для Windows, которое включает Docker Engine и Docker CLI, позволяя вам запускать и управлять контейнерами прямо на вашем ПК.

Шаги установки:

Шаг 1. Скачайте Docker Desktop

Перейдите на официальный сайт Docker и скачайте установочный файл Docker Desktop для Windows.

Шаг 2. Запустите установку

Дважды щелкните на скачанном файле и следуйте инструкциям установщика. В процессе установки выберите опцию «Enable WSL 2» (если используете Windows 10 или выше), чтобы обеспечить лучшую производительность Docker.

Шаг 3. Перезагрузка компьютера

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

Шаг 4. Запуск Docker Desktop

Найдите Docker Desktop в меню «Пуск» и запустите его. После запуска убедитесь, что Docker работает, проверив его статус в трее.

Шаг 5. Проверка установки

Откройте командную строку или PowerShell и введите команду:

docker --version

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

Установка Docker на Linux может немного отличаться в зависимости от дистрибутива. Рассмотрим установку на примере Ubuntu.

Шаги установки на Ubuntu

Шаг 1. Обновление пакетов

Откройте терминал и обновите список пакетов:

sudo apt update

Шаг 2. Установка зависимостей

Установите необходимые пакеты для Docker:

sudo apt install apt-transport-https ca-certificates curl software-properties-common

Шаг 3. Добавление Docker GPG ключа

Добавьте ключ GPG для официального Docker репозитория:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Шаг 4. Добавление Docker репозитория

Добавьте Docker репозиторий в источники пакетов:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Шаг 5. Установка Docker

Обновите список пакетов и установите Docker:

sudo apt update
sudo apt install docker-ce

Шаг 6. Проверка установки

Проверьте, что Docker установлен и работает, запустив команду:

sudo systemctl status docker

Шаг 7. Добавление пользователя в группу Docker (опционально)

Чтобы запускать Docker без sudo, добавьте своего пользователя в группу Docker:

sudo usermod -aG docker ${USER}

Шаг 8. Проверка версии Docker

Введите команду:

docker --version

Это должно вывести установленную версию Docker.

Основные команды Docker

После установки Docker, следующим шагом будет освоение основных команд, которые позволяют управлять контейнерами и образами. В этом разделе мы рассмотрим наиболее важные команды Docker: docker run, docker ps, docker stop, docker rm, docker rmi. Понимание и умение использовать эти команды поможет вам эффективно работать с Docker и максимально использовать его возможности.

Команда docker run

Команда docker run используется для создания и запуска контейнеров на основе указанных образов.

Примеры использования

Запуск контейнера из образа:

docker run hello-world

Эта команда загружает образ hello-world (если он не загружен) и запускает контейнер, который выводит приветственное сообщение.

Запуск контейнера в фоновом режиме:

docker run -d nginx

Флаг -d (detached) запускает контейнер в фоновом режиме. Этот контейнер продолжает работать, даже если вы закроете терминал.

Проброс портов:

docker run -d -p 8080:80 nginx

Флаг -p 8080:80 маппирует порт 80 контейнера на порт 8080 хоста, что позволяет получить доступ к веб-серверу Nginx через http://localhost:8080.

Присвоение имени контейнеру:

docker run -d -p 8080:80 --name mynginx nginx

Флаг —name присваивает контейнеру имя mynginx, что упрощает его идентификацию и управление.

Команда docker ps

Команда docker ps показывает список запущенных контейнеров.

Примеры использования:

Список запущенных контейнеров:

docker ps

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

Список всех контейнеров (включая остановленные):

docker ps -a

Флаг -a выводит информацию обо всех контейнерах, включая те, которые были остановлены.

Фильтрация контейнеров:

docker ps -f "status=exited"

Флаг -f (filter) позволяет фильтровать контейнеры по различным критериям, например, по статусу.

Команда docker stop

Команда docker stop используется для остановки запущенного контейнера.

Примеры использования:

Остановка контейнера по имени:

docker stop mynginx

Эта команда останавливает контейнер с именем mynginx.

Остановка контейнера по идентификатору:

docker stop <container_id>

Вы также можете остановить контейнер, указав его идентификатор.

Команда docker rm

Команда docker rm используется для удаления остановленных контейнеров.

Примеры использования:

Удаление контейнера по имени:

docker rm mynginx

Эта команда удаляет контейнер с именем mynginx.

Удаление всех остановленных контейнеров:

docker rm $(docker ps -a -q)

Эта команда удаляет все остановленные контейнеры, используя вывод команды docker ps -a -q, которая возвращает идентификаторы всех контейнеров.

Команда docker rmi

Команда docker rmi используется для удаления Docker-образов.

Примеры использования:

Удаление образа по имени:

Принудительное удаление образа:

docker rmi -f nginx

Работа с Docker Hub: поиск и загрузка образов

Docker Hub — это публичный реестр, предоставляемый Docker, который позволяет разработчикам находить, хранить и делиться контейнерными образами. Это своего рода «магазин» Docker-образов, где можно найти множество готовых к использованию образов, от базовых операционных систем до сложных приложений и сервисов. В этом разделе мы рассмотрим, как искать и загружать образы с Docker Hub, а также как загружать собственные образы в Docker Hub.

Поиск образов на Docker Hub

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

Использование веб-интерфейса:

Перейдите на сайт Docker Hub:

Откройте Docker Hub в браузере.

Авторизация (опционально):

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

Поиск образов:

Введите ключевые слова в строку поиска. Например, для поиска образа nginx, введите «nginx». Вы увидите список доступных образов с их рейтингами и количеством загрузок.

Выбор образа:

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

Использование командной строки

Команда docker search:

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

docker search nginx

Эта команда выведет список образов, содержащих слово «nginx», с информацией о звездочках (рейтинг), описаниях и официальном статусе.

Загрузка образов с Docker Hub

Загрузка образов с Docker Hub — это простой процесс, который осуществляется с помощью команды docker pull.

Примеры использования:

Загрузка официального образа:

docker pull nginx

Эта команда загружает последний стабильный образ nginx.

Загрузка определенной версии образа:

docker pull nginx:1.19

Вы можете указать версию (тег) образа, чтобы загрузить конкретную версию. В данном случае загружается версия 1.19.

Загрузка образа из пользовательского репозитория:

docker pull username/repository:tag

Замените username, repository и tag на соответствующие значения. Например:

docker pull johndoe/myapp:latest