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