Как запустить первый контейнер Docker

DockerBeginner
Практиковаться сейчас

Введение

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

Основы Docker

Что такое Docker?

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

Основные понятия

Контейнеры

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

graph LR A[Код приложения] --> B[Контейнер] C[Зависимости] --> B D[Среда выполнения] --> B

Образы Docker

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

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

Компонент Описание
Docker Client Командная строка для взаимодействия с Docker
Docker Daemon Фоновый сервис, управляющий объектами Docker
Docker Registry Система хранения и распространения образов Docker

Ключевые преимущества

  1. Согласованность: Обеспечивает идентичные среды как в разработке, так и в производстве.
  2. Изоляция: Разделяет приложения и их зависимости.
  3. Эффективность: Лёгкие по сравнению с традиционными виртуальными машинами.
  4. Масштабируемость: Легко масштабировать приложения горизонтально.

Сценарии использования

  • Развертывание микросервисов
  • Непрерывная интеграция/непрерывная доставка (CI/CD)
  • Разработка облачных приложений
  • Среды разработки и тестирования

Начало работы с LabEx

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

Docker против традиционной виртуализации

graph TD A[Традиционная виртуализация] --> B[Полная ОС для каждого приложения] A --> C[Высокие затраты ресурсов] D[Контейнеризация Docker] --> E[Общий ядро ОС] D --> F[Лёгкие контейнеры]

Понимание этих основ позволит вам уверенно работать с Docker и использовать его мощные возможности контейнеризации.

Настройка и конфигурация

Системные требования

Перед установкой Docker убедитесь, что ваша система Ubuntu 22.04 соответствует следующим требованиям:

  • 64-битная операционная система
  • Ядро Linux 3.10 или выше
  • Минимальный объём оперативной памяти 2 ГБ
  • Достаточно места на диске

Способы установки

Способ 1: Официальный репозиторий Docker

## Обновить индекс пакетов
sudo apt-get update

## Установить необходимые пакеты
sudo apt-get install ca-certificates curl gnupg lsb-release

## Добавить официальный ключ GPG Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

## Настроить стабильный репозиторий
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

## Установить Docker Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

Способ 2: Скрипт для удобства

## Скачать и запустить скрипт установки Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Настройка после установки

Настройка группы пользователей

## Добавить текущего пользователя в группу docker
sudo usermod -aG docker $USER

## Проверить установку
docker --version

Файлы конфигурации Docker

Путь к файлу Назначение
/etc/docker/daemon.json Конфигурация демона Docker
~/.docker/config.json Настройки Docker для пользователя

Установка Docker Compose

## Скачать Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

## Применить разрешения на выполнение
sudo chmod +x /usr/local/bin/docker-compose

## Проверить установку
docker-compose --version

Процесс проверки

graph TD A[Установить Docker] --> B[Добавить пользователя в группу Docker] B --> C[Проверить версию Docker] C --> D[Запустить тестовый контейнер] D --> E[Подтвердить успешную установку]

Тестирование установки Docker

## Запустить контейнер hello-world
sudo docker run hello-world

Рекомендация LabEx

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

Распространённые проблемы

  • Перезапустить службу Docker: sudo systemctl restart docker
  • Проверить статус Docker: sudo systemctl status docker
  • Проверить подключение к сети: docker info

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

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

Скачивание образа

## Скачать образ Ubuntu из Docker Hub
docker pull ubuntu:latest

Команды жизненного цикла контейнера

Команда Описание
docker run Создать и запустить новый контейнер
docker ps Список запущенных контейнеров
docker ps -a Список всех контейнеров
docker start Запустить остановленный контейнер
docker stop Остановить запущенный контейнер

Интерактивное выполнение контейнера

## Запустить контейнер Ubuntu интерактивно
docker run -it ubuntu:latest /bin/bash

Режимы контейнера

graph LR A[Режимы контейнера] --> B[Интерактивный режим] A --> C[Отключенный режим] A --> D[Режим переднего плана] A --> E[Режим фонового плана]

Пример отключенного режима

## Запустить веб-сервер Nginx в фоновом режиме
docker run -d -p 80:80 nginx:latest

Картирование портов

## Картирование порта контейнера на порт хоста
docker run -d -p 8080:80 nginx:latest

Подключение томов

## Подключение каталога хоста к контейнеру
docker run -v /host/path:/container/path ubuntu:latest

Переменные окружения

## Установка переменных окружения
docker run -e MYSQL_ROOT_PASSWORD=secret mysql:latest

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

## Удалить контейнер
docker rm container_name

## Удалить все остановленные контейнеры
docker container prune

Расширенные операции с контейнерами

Просмотр контейнеров

## Просмотреть детали контейнера
docker inspect container_name

## Просмотреть логи контейнера
docker logs container_name

Рекомендации по лучшим практикам

  1. Использовать официальные образы
  2. Поддерживать контейнеры лёгкими
  3. Использовать конкретные теги образов
  4. Реализовать надлежащие ограничения ресурсов

Рекомендации LabEx по обучению

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

Рабочий процесс контейнера

graph TD A[Скачать образ] --> B[Создать контейнер] B --> C[Запустить контейнер] C --> D[Взаимодействие/Использование контейнера] D --> E[Остановить контейнер] E --> F[Удалить контейнер]

Распространённые сценарии

Сценарий Команда Docker
Веб-сервер docker run -d -p 80:80 nginx
База данных docker run -d mysql:latest
Приложение Python docker run -it python:3.9

Советы по устранению неполадок

  • Проверить статус контейнера: docker ps
  • Просмотреть логи контейнера: docker logs
  • Перезапустить контейнер: docker restart

Резюме

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